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

Pythonでの2つのリンクリストの交差


2つのリンクリストAとBがあるとすると、これらのリンクリストにはいくつかの要素があります。交点の参照を返す必要があります。入力はintersectionVal=8、A =[4,1,8,4,5]、B =[5,0,1,8,4,5]、skipA =2、skipB =3で、これらはスキップするために使用されますAから2つの要素、Bから3つの要素をスキップします。

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

  • dというマップを定義する
  • headAがnullではない場合
    • d [headA]:=1
    • headA:=headAの次
  • headBがnullではない場合
    • dのheadBの場合
      • ヘッドBを返す
    • headB:=headBの次
  • nullを返す

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

class ListNode:
   def __init__(self, data, next = None):
      self.data = data
      self.next = next
class Solution(object):
   def getIntersectionNode(self, headA, headB):
      """
      :type head1, head1: ListNode
      :rtype: ListNode
      """
      dict = {}
      while headA:
         dict[headA]=1
         headA = headA.next
      while headB:
         if headB in dict:
            return headB
         headB = headB.next
      return None
headA = ListNode(4)
headB = ListNode(5)
Intersect = ListNode(8, ListNode(4, ListNode(5)))
headA.next = ListNode(1, Intersect)
headB.next = ListNode(0, ListNode(1, Intersect))
ob1 = Solution()
op = ob1.getIntersectionNode(headA, headB)
print("Intersection:",op.data)

入力

headA = ListNode(4)
headB = ListNode(5)
Intersect = ListNode(8, ListNode(4, ListNode(5)))
headA.next = ListNode(1, Intersect)
headB.next = ListNode(0, ListNode(1, Intersect))

出力

Intersected at '8'

  1. Javaで2つのリンクリストの交点を見つける

    リンクリストは線形データ構造であり、各ノードには2つのブロックがあり、一方のブロックにはノードの値またはデータが含まれ、もう一方のブロックには次のフィールドのアドレスが含まれます。 各ノードにリスト内の他のノードを指すランダムポインタが含まれるようなリンクリストがあると仮定します。タスクは、2つのリンクリストが互いに交差するノードを見つけることです。それらが交差しない場合は、出力としてNULLまたは空を返します。 例 入力-1: 出力: 2 説明: 指定されたリンクリストはノードで値「2」と交差するため、値「2」を出力として返します。 入力-2: 出

  2. Pythonを使用してリンクリストとして指定された2つの多項式を追加するプログラム

    2つの多項式が与えられ、2つの多項式の加算を見つける必要があるとします。多項式は、リンクリストとして表す必要があります。多項式の項は、リンクリストノードとして表されます。各リンクリストノードには、係数値、電力値、および次のリンクリストノードへのポインターが含まれます。 2つのリンクリスト多項式を追加した3番目のリンクリストを返す必要があります。 したがって、入力が次のような場合 1x ^ 1 + 1x ^ 2=0および2x^1 + 3x ^ 0 =0、 その場合、出力は3x ^ 1 + 1x ^ 2 + 3x ^ 0 =0になります。 これを解決するには、次の手順に従います-