相交链表

160. 相交链表
思路:lenA + lenB = lenB + lenA,那么两条链表分别走一遍之后,如果无环,那么 curA 始终不等于 curB,否则第一次相交节点即为两条链表相交的起始节点(确保后半程距离相同)。
关于环:其实有环也没啥了不起,无非是多一层链表长度的计算,使得两者走的路程变成「有限」的路程(入口到首结点距离 + 环长)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headA == null || headB == null) return null; // 特判
        ListNode curA = headA;
        ListNode curB = headB;

        while(true) {
            while(curA != null && curB != null) {
                if(curA == curB) return curA;
                curA = curA.next;
                curB = curB.next;
            }
            if(curA == null && curB == null) break; // null
            if(curA == null) curA = headB;
            if(curB == null) curB = headA;
        }

        return null;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 14:08
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 15:08
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务