Напишите функцию, которая берет в голову одного связанного списка и целочисленного 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.
- Используйте два указателя для отслеживания начала и конечного узла связанного списка.
- AlgoExpert для заявления о проблеме
- Крис Лейпельт Отказ
Оригинал: “https://dev.to/anzhari/today-i-learned-remove-kth-node-from-the-end-of-a-single-linked-list-11p9”