原创

[百战LeetCode][12.寻找两个链表的首个公共节点]


==========================努力奋斗财源广进==========================

一、算法题目

输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

二、题解

1、我的题解

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) {
        ListNode l1 = pHead1;
        ListNode l2 = pHead2;
        while(l1 != l2){
            l1 = (l1 == null)  ? pHead2 : l1.next;
            l2 = (l2 == null)  ? pHead1 : l2.next; 
        }
        return l1; 
    }
}

2、优秀题解

//待定

三、解法心得

此题的解法更多的是一种投巧的方法,如果想到了,很快就能完成,但是如果想不到就不太行。 解题的关键就是两个指针,把两个链表均走一遍,由于速度是一样的,因此如果有公共节点,一定能找到。

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2022-07-15 21:40
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论