トピック:
こちらをクリック!!トピックポータル
アイデア:
1.愚かな方法
二つのリストがそう、未来は同じリストである交差点から、その後、交差する場合理由は次のとおりです。
各トラバース二つのリスト、二つのリストの長さが結果、2つのn Nモバイルノード、2つのリストに長さとリストヘッドポインタの長さとの差を計算し得て、2つのリストが表示される場合は、同時に移動同じメモリアドレスへのポインタまで、交差点では交差しないように表示されていない同じメモリアドレスに対して、状況のポイントを説明します
クラスソリューション{ 公共ListNode getIntersectionNode(ListNode headA、ListNode headB){ int型レナ= 0、LENB = 0、LEN = 0 。 ListNode tAの = headA。 ListNode tBを = headB。 しばらく(!TA = ヌル){ レナ ++ ; tAの = tA.next。 } 一方(TB =!NULL ){ LENB ++ 。 tBを = tB.next。 } LEN= Math.max(レナ、LENB) - Math.min(レナ、LENB)。 もし(レナ> {LENB) レナ = 0 。 一方、(リナ< LEN){ headA = headA.next。 LENA ++ ; } } 他{ LENB = 0 。 一方、(LENB < LEN){ headB = headB.next。 LENB ++ ; } } しばらく headA(!=headB){ HEADER = headA.next。 headB = headB.next。 もし(ヘッド== nullの || headB == nullの)リターン はnull ; } 戻りヘッド。 } }
2賢い方法
除去する方法及びポインタの最初の二つのリストの長さの同じ差、可能な場合はそうします。
点B鎖へのポインタリストAポインタが移動をする際ように同時にポインタの二つのリストがバックテーブルの端に移動し、Bリストポインタがテーブルの端に移動させるようときにヘッダにリストAポインタ。二つのリストが交差する場合、長いリストは、ポインタがリンクリストに二つの長鎖n個のノードの短鎖長差を来ているヘッダ内次いでステアリングショートリストポインタ、すなわち、今、両手が同じスタートラインです。(図面の元のタイトルは、理解するために再び行きます)
ロング少ないのn-離れた短鎖に、より多くの長鎖n個のノード離れ始めからリストポインタをリンクされ、そして、短いリストから始まる短鎖ポインタが鎖長際に、n個のノードを行くために、行くn個のノードは、その二つが同じスタートラインになりますか。
クラスソリューション{ 公共ListNode getIntersectionNode(ListNode headA、ListNode headB){ 場合(headA == NULL || headB == NULL)戻り ヌル。 ListNodeのpA = headA、PB、= headB。 しばらく(PA!= PB){ のpA = pAで== nullの?headB:pA.next。 pB =をpB == nullの?headA:pB.next。 } 戻りのPA; } }