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

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

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

import java.util.*;
/*
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 pHead1Temp = pHead1;
        ListNode pHead2Temp = pHead2;
        List<ListNode> list1 = new ArrayList<>();
        List<ListNode> list2 = new ArrayList<>();
        int count1 = 0;
        int count2 = 0;
        while (pHead1Temp != null) {
            count1 += 1;
            list1.add(pHead1Temp);
            pHead1Temp = pHead1Temp.next;
        }
        while (pHead2Temp != null) {
            count2 += 1;
            list2.add(pHead2Temp);
            pHead2Temp = pHead2Temp.next;
        }
        int n = 0;
        if (count1 > count2) {
            n = list1.size()-1;
            for (int i = list2.size() - 1; i >= 0; i--) {
                if (list2.get(i).val != list1.get(n).val) {
                    return list1.get(n).next;
                }
                n -= 1;
                if (i == 0) {
                    return list2.get(0);
                }
            }
        } else {
            n = list2.size()-1;
            for (int i = list1.size() - 1; i >= 0; i--) {
                if (list1.get(i).val != list2.get(n).val) {
                    return list2.get(n).next;
                }
                n -= 1;
                if (i == 0) {
                    return list1.get(0);
                }
            }
        }

        return null;
    }
}

全部评论

相关推荐

05-03 12:45
西南大学 Java
sdgfdv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务