Leetcode 160. Intersection of Two Linked Lists

Leetcode 160. Intersection of Two Linked Lists

错解

一开始没看清题目的要求中,提到最后表结构不能变,想到的做法是:
先遍历A,把A翻转,然后B就可以走到headA判断出它们是否相交,但是即便如此,也不能判断出相交点在哪里,而且还会破坏链表的结构,所以这种写法不行。

正解

pAa4JWF.png

把A,B首位相接,根据节点数量关系,我们能确定,只要二者相交,遍历的时候就一定会在交点相遇。

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *curA = headA, *curB = headB;
        while(curA != curB) {
            curA = curA?curA->next:headB;
            curB = curB?curB->next:headA;
        }
        return curA;
    }
};

注意curA = curA?curA->next:headB;这里不能写curA->next?curA->next:headB,我们要允许curA/B能够走到NULL,否则虽然不会影响在相交情况下的判断,但是在不相交的情况下,由于curA和curB都不会走到NULL,就会陷入死循环TLE。

本文作者:Gold_stein

本文链接:https://www.cnblogs.com/smartljy/p/18489408

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Gold_stein  阅读(5)  评论(0编辑  收藏  举报
历史上的今天:
2019-10-21 1821:【00NOIP提高组】乘积最大
2019-10-21 1820:【00NOIP提高组】进制转换
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 逃离地面 RAD & 三浦透子
逃离地面 - RAD & 三浦透子
00:00 / 00:00
An audio error has occurred.

作词 : 野田洋次郎

作曲 : 野田洋次郎

空飛ぶ羽根と引き換えに 繋ぎ合う手を選んだ僕ら

それでも空に魅せられて 夢を重ねるのは罪か

夏は秋の背中を見て その顔を思い浮かべる

憧れなのか、恋なのか 叶わぬと知っていながら

重力が眠りにつく 1000年に一度の今日

太陽の死角に立ち 僕らこの星を出よう

彼が眼を覚ました時 連れ戻せない場所へ

「せーの」で大地を蹴って ここではない星へ

行こう

もう少しで運命の向こう もう少しで文明の向こう

もう少しで運命の向こう もう少しで

夢に僕らで帆を張って 来たるべき日のために夜を超え

いざ期待だけ満タンで あとはどうにかなるさと 肩を組んだ

怖くないわけない でも止まんない

ピンチの先回りしたって 僕らじゃしょうがない

僕らの恋が言う 声が言う

「行け」と言う