首頁  >  文章  >  web前端  >  js中找到兩個鍊錶的第一個公共結點的演算法

js中找到兩個鍊錶的第一個公共結點的演算法

不言
不言原創
2018-07-23 11:00:141495瀏覽

這篇文章要跟大家分享的內容是關於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中實作滑動視窗的最大值的演算法    

js中利用兩個堆疊實作佇列的演算法

#

以上是js中找到兩個鍊錶的第一個公共結點的演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn