题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1 == null && pHead2 == null){
            return null;
        }
        ListNode cur1 = pHead1;
        ListNode cur2 = pHead2;
        int count1 = 0;
        int count2 = 0;
        while(cur1 != null && cur1.next != null){
            count1++;
            cur1 = cur1.next;
        }
        cur1 = pHead1;
        while(cur2 != null && cur2.next != null){
            count2++;
            cur2 = cur2.next;
        }
        cur2 = pHead2;
        int count3 = Math.abs(count1 - count2);
        if(count1 > count2){
            for(int i = 0; i < count3; i++){
                cur1 = cur1.next;
            }
        }else{
            for(int i = 0; i < count3; i++){
                cur2 = cur2.next;
            }
        }
        while(cur1 != cur2){
            if(cur1 != null && cur2 != null){
                cur1 = cur1.next;
                cur2 = cur2.next;
            }else{
                return null;
            }
        }
        return cur1;
    }
}
全部评论

相关推荐

秋招之BrianGriffin:你再跟他说华为工资也低(相对互联网)就可以享受私信爆炸了😋
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:春节刚过就开卷吗?哈基馆,你这家伙......
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务