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

Pythonの2つのリンクリストからリンクリストの交差点を見つけるプログラム


2つのソートされたリンクリストL1とL2があるとすると、これら2つのリストの共通部分を含む新しいソートされたリンクリストを作成する必要があります。

したがって、入力がL1 =[2、4、8] L2 =[3、4、8、10]の場合、出力は[4、8、]

になります。

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

  • head:=値が0の新しいノード
  • cur:=head
  • l1とl2が空ではない場合は、
    • l1の値
    • l1:=l1の次
  • それ以外の場合、l2の値
  • l2:=l2の次
  • それ以外の場合、
    • curの次:=l1の値と同じ値の新しいノード
    • l1:=l1の次
    • l2:=l2の次
    • cur:=次のcur
  • 次の頭に戻る
  • 理解を深めるために、次の実装を見てみましょう-

    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
    def print_list(head):
       ptr = head
       print('[', end = "")
       while ptr:
          print(ptr.val, end = ", ")
          ptr = ptr.next
       print(']')
    class Solution:
       def solve(self, l1, l2):
          head = cur = ListNode(0)
          while l1 and l2:
             if l1.val < l2.val:
                l1 = l1.next
             elif l2.val < l1.val:
                l2 = l2.next
             else:
                cur.next = ListNode(l1.val)
                l1 = l1.next
                l2 = l2.next
                cur = cur.next
          return head.next
    ob = Solution()
    L1 = make_list([2, 4, 8])
    L2 = make_list([3, 4, 8, 10])
    print_list(ob.solve(L1, L2))

    入力

    [2, 4, 8], [3, 4, 8, 10]

    出力

    [4, 8, ]

    1. Pythonのリンクリストからmノードの後に​​nノードを削除するプログラム

      開始ノードが「head」で、2つの整数mとnを持つリンクリストが与えられたとします。リストをトラバースして、最初のmノードがリストに保持され、最初のmノードが削除された後の次のnノードなどのいくつかのノードを削除する必要があります。リンクリストの最後に到達するまでこれを実行します。ヘッドノードから開始し、変更されたリンクリストが返されます。 リンクリスト構造は-として与えられます Node    value : <integer>    next : <pointer to next node> したがって、入力が要素=[1、

    2. 2つの文字列から珍しい単語を見つけるPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B):    # count    count = {}    # insert in A    for word in A.split():       count[word] = coun