Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm nút cuối cùng thứ K của danh sách được liên kết bằng Python

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