国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

兩個鏈表的第一個公共結點

2019-11-11 03:01:35
字體:
來源:轉載
供稿:網友

輸入兩個鏈表,找出它們的第一個公共結點。

IDEA

public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}鏈表是單鏈表, 如果倆個鏈表有相同的節點,則該節點后,這兩個鏈表重合,故拓撲結構是Y型。

處理的辦法是先計算兩個鏈表的長度,讓較長的鏈表先走到與另一鏈表一樣產度,然后同時移動,比較兩個鏈表,找出首次比較相同的那一個

CODE

public class Solution {    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {        if(pHead1==null||pHead2==null){            return null;        }        int len1=getLength(pHead1);        int len2=getLength(pHead2);        ListNode p1=pHead1;        ListNode p2=pHead2; 		if(len1>len2){            int len=len1-len2;            while(len>0){                p1=p1.next;                len--;            }        }else{            int len=len2-len1;            while(len>0){                p2=p2.next;                len--;            }        }        while(p1!=p2){            p1=p1.next;            p2=p2.next;        }        return p1;    }    public static int getLength(ListNode pHead){        int len=0;        ListNode p=pHead;        while(p!=null){            len++;            p=p.next;        }        return len;    }}

這是不用計算長度的一個巧妙的辦法

public class Solution {    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {        ListNode p1=pHead1, p2=pHead2;        while(p1!=p2){			p1=(p1==null?pHead2:p1.next);            p2=(p2==null?pHead1:p2.next);        }        return p1;    }}


上一篇:C# ??合并運算符

下一篇:VS 編譯lua庫

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 威信县| 崇文区| 麻城市| 左权县| 乌审旗| 山西省| 当雄县| 吉木萨尔县| 新晃| 青田县| 瑞昌市| 武陟县| 安阳县| 吉木乃县| 伊吾县| 阿瓦提县| 类乌齐县| 民权县| 尚志市| 通渭县| 南陵县| 南乐县| 五莲县| 潮州市| 馆陶县| 正安县| 江达县| 读书| 陵水| 贡山| 沁阳市| 杂多县| 浦北县| 沂水县| 巴青县| 丹寨县| 军事| 天祝| 洪湖市| 彭山县| 高碑店市|