Giả sử chúng ta có một danh sách được liên kết đơn lẻ, chúng ta phải kiểm tra tìm giá trị của nút cuối cùng thứ k (được lập chỉ mục 0). Chúng ta phải giải quyết vấn đề này trong một lượt.
Vì vậy, nếu đầu vào giống như nút =[5,4,6,3,4,7], k =2, thì đầu ra sẽ là 3, vì Nút cuối cùng thứ hai (chỉ số 3) có giá trị là 3.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
klast:=node
-
cuối cùng:=nút
-
đối với tôi trong phạm vi từ 0 đến k, thực hiện
-
cuối cùng:=tiếp theo của cuối cùng
-
-
trong khi tiếp theo của cuối cùng không phải là null, thực hiện
-
cuối cùng:=tiếp theo của cuối cùng
-
klast:=next of klast
-
-
giá trị trả về của klast
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class ListNode: def __init__(self, data, next = None): self.val = data self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head class Solution: def solve(self, node, k): klast = node last = node for i in range(k): last = last.next while last.next: last = last.next klast = klast.next return klast.val ob = Solution() l1 = make_list([5,4,6,3,4,7]) print(ob.solve(l1, 2))
Đầu vào
[5,4,6,3,4,7], 2
Đầu ra
3