Remove Duplicates from Sorted List
| https://leetcode.com/problems/remove-duplicates-from-sorted-list | Easy | 
Условие
Дан отсортированный по возрастанию односвязный список. Необходимо удалить все дубликаты, чтобы каждый элемент встречался только один раз. Нужно вернуть связанный список с уникальными элементами в том же порядке.
Примеры
Input:head = [1, 1, 2]Output:[1, 2]
Input:head = [1, 1, 2, 3, 3]Output:[1, 2, 3]
Решение
// Определение структуры узла связанного списка
class ListNode(var `val`: Int) {
    var next: ListNode? = null
}
/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 */
fun deleteDuplicates(head: ListNode?): ListNode? {
    var current = head
    // Проходим по всему списку, пока не достигнем конца
    while (current != null && current.next != null) {
        // Если текущий элемент совпадает со следующим, пропускаем дубликат
        if (current.`val` == current.next?.`val`) {
            current.next = current.next?.next // Убираем дубликат, перескакивая через него
        } else {
            current = current.next // Иначе продолжаем движение по списку
        }
    }
    return head // Возвращаем модифицированный список
}
Временная сложность
O(n), где n — количество узлов в списке. Мы проходим по каждому узлу один раз.
Пространственная сложность
O(1), так как используется константное количество дополнительной памяти.