Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでリンクリストのK番目の最後のノードを見つけるプログラム


単一リンクリストがあるとすると、k番目の最後のノード(0インデックス)の値を確認する必要があります。これはシングルパスで解決する必要があります。

したがって、入力がnode =[5,4,6,3,4,7]、k =2のようである場合、最後から2番目の(インデックス3)ノードの値は3であるため、出力は3になります。

これを解決するには、次の手順に従います-

  • klast:=ノード

  • 最後:=ノード

  • 0からkの範囲のiの場合、実行

    • 最後:=最後の次

  • 最後の次はnullではありませんが、実行してください

    • 最後:=最後の次

    • klast:=klastの次

  • klastの戻り値

理解を深めるために、次の実装を見てみましょう-

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))

入力

[5,4,6,3,4,7], 2

出力

3

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. リスト内で最大の数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、リストの最大の要素を計算する必要があります。 ここでは、組み込み関数を使用して、問題ステートメントの解決策に到達します sort()関数の使用 例 # list list1 = [23,1,32,67,2,34,12] # sorting list1.sort() # printing the last element print("Largest element is:", list1[-1]) 出力 Largest in given array is 67