2022-5-11 链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

复制代码
 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) {
 7  *         val = x;
 8  *         next = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
14         ListNode p1=headA,p2=headB;
15         while (p1!=null||p2!=null){
16             if (p1==p2) return p1;
17             p1=p1.next;
18             p2=p2.next;
19             if (p1==null&&p2==null) break;
20             if (p1==null) p1=headB;
21             if (p2==null) p2=headA;
22         }
23         return null;
24     }
25 }
复制代码

思路:让两个指针同时走A+B的过程,如果相交必定会相同,否则必定会同时到达终点null。

posted on   阿ming  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示