首页 > 编程语言 > 详细

LeetCode160(C语言)

时间:2021-06-04 12:06:48      阅读:11      评论:0      收藏:0      [点我收藏+]
/*
    一、比较容易理解的方法
        分别把两条链走完,计算两条链的长度,差值就是一条链比另外一条链的长的长度;
        然后将将较长的链先走到剩下的和另一条一样长时,两条链开始同步一起走,相等处即为相交的起点,若走到空没有,则说明没有交点。
    二、用哈希表存存储一条链
        遍历另一条链,在哈希表中找到的第一个结点即为交点的开始,若哈希表中没有任何一个结点,则没有交点。
    三、双向指针
        因为两条链之和相等,所以当从起点开始,走完后到另外一条链的起点开始,那么当走到相同结点时,则为相交的起点。 
*/
// 这里是最佳方案 
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    if(headA == NULL || headB == NULL) return NULL;
    struct ListNode *pa = headA;
    struct ListNode *pb = headB;
    while(pa != pb)
    {
        if(pa == NULL) pa = headB;
        if(pb == NULL) pb = headA;
        pa = pa->next;
        pb = pb->next;
    }
    return headA;
} 

 

LeetCode160(C语言)

原文:https://www.cnblogs.com/xie213/p/14848398.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!