這篇文章要跟大家分享的內容是關於js中找到兩個鍊錶的第一個公共結點的演算法 ,有一定的參考價值,有需要的朋友可以參考一下。
輸入兩個鍊錶,找出它們的第一個公共結點。
考慮到兩個鍊錶不一樣長的情況,算出兩個鍊錶的長度差,然後長的鍊錶要先把長度差走完,然後兩個鍊錶再一起走。
/*function ListNode(x){ this.val = x; this.next = null; }*/ function FindFirstCommonNode(h1, h2) { var h1Len = 0, h2Len = 0; var cur = h1; while(cur!==null){ h1Len++; cur = cur.next; } cur = h2; while(cur!==null){ h2Len++; cur = cur.next; } var distance = 0; var t1, t2; if(h1Len > h2Len){ t1 = h1; t2 = h2; distance = h1Len - h2Len; }else{ t1 = h2; t2 = h1; distance = h2Len - h1Len; } while(distance !== 0){ t1 = t1.next; distance--; } while(t1 !== t2){ t1 = t1.next; t2 = t2.next; } return t1; }
相關推薦:
#以上是js中找到兩個鍊錶的第一個公共結點的演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!