Рубрики
Без рубрики

Сегодня я узнал: Удалить kth Node с конца одного связанного списка

Заявление о проблеме Написать функцию, которая берет в голову один связанный список и INTE … Теги с Python, алгоритмы, WebDev, начинающими.

Напишите функцию, которая берет в голову одного связанного списка и целочисленного k, который представляет собой kth Node для удаления из конца связанного списка.

head = 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
k = 4
# node 6 is removed
0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 7 -> 8 -> 9
class LinkedList:
    def __init__(self, value):
        self.value = value
        self.next = None


def remove_kth_node_from_end(head, k):
    ptr_1 = head
    ptr_2 = head
    ctr = 0

    # Move ptr_2
    while ctr < k:
        # Return early if k is longer than list's length
        if ctr < k and ptr_2 is None:
            return
        ptr_2 = ptr_2.next
        ctr += 1

    # Check if removing the first element on the list
    if ptr_2 is None:
        head.value = head.next.value
        head.next = head.next.next
        return head

    while ptr_2.next is not None:
        ptr_1 = ptr_1.next
        ptr_2 = ptr_2.next

    # Remove kth node from end
    ptr_1.next = ptr_1.next.next
    return head
  • Поскольку это один связанный список, мы не можем пройти к концу списка, а затем отслеживать обратно Kth Node.
  • Используйте два указателя для отслеживания начала и конечного узла связанного списка.

Оригинал: “https://dev.to/anzhari/today-i-learned-remove-kth-node-from-the-end-of-a-single-linked-list-11p9”