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の次
- 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, ]
-
Pythonのリンクリストからmノードの後にnノードを削除するプログラム
開始ノードが「head」で、2つの整数mとnを持つリンクリストが与えられたとします。リストをトラバースして、最初のmノードがリストに保持され、最初のmノードが削除された後の次のnノードなどのいくつかのノードを削除する必要があります。リンクリストの最後に到達するまでこれを実行します。ヘッドノードから開始し、変更されたリンクリストが返されます。 リンクリスト構造は-として与えられます Node value : <integer> next : <pointer to next node> したがって、入力が要素=[1、
-
2つの文字列から珍しい単語を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B): # count count = {} # insert in A for word in A.split(): count[word] = coun