博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intersection of Two Linked Lists(链表)
阅读量:5925 次
发布时间:2019-06-19

本文共 1655 字,大约阅读时间需要 5 分钟。

Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A:         a1 → a2                      ↘                       c1 → c2 → c3                   ↗            B:     b1 → b2 → b3
begin to intersect at node c1. 题意:就是求取两个链表的交汇点, 要求:无交汇点返回NULL,否则返回交汇点的地址。
 
 

暴力思路:O(nm),固定A链表的第一个点,依次遍历B链表看是否有相同的点;接着固定A链表的第二个点,再依次遍历B链表,直到找到相同点为止。 hash解:时间复杂度O(n+m),空间O(n)或者O(m) 两指针解法:我们发现只要两个链表长度一样,就只需同时后移节点指针比较一个,若其中一个较长呢,其实处理一下,把两个链表变成一样长即可。 解法步骤: 1.求出两个链表的长度 2.若一样长,无需处理;若其中一个较长,则只需让较长的链表先走abs(lengthA-lengthB)步即可。 3.同时后移节点指针,直到找到交汇点。 代码:
class Solution {private:    int getLength(ListNode* head){        if(head==NULL) return 0;        ListNode* p=head;        int res=0;        while (p->next!=NULL)        {            ++res;p=p->next;        }        return res;    }public:    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {        if(headA==NULL||headB==NULL) return NULL;        int length_A=getLength(headA);        int length_B=getLength(headB);        ListNode* pA=headA;        ListNode* pB=headB;        int dis=0;        if (length_A>length_B)        {            dis=length_A-length_B;            while (dis>0)            {                --dis;                pA=pA->next;            }        }else if(length_A
0) { --dis; pB=pB->next; } } while (pA!=NULL&&pB!=NULL&&pA!=pB) { pA=pA->next; pB=pB->next; } if(pA==pB&&pA!=NULL) return pA; else return NULL; }};

 

 

转载于:https://www.cnblogs.com/fightformylife/p/4309810.html

你可能感兴趣的文章
《随笔记录》20170310
查看>>
网站分析系统
查看>>
一站式解决,Android 拍照 图库的各种问题
查看>>
JavaScript匿名函数以及在循环中的匿名函数
查看>>
中国HBase技术社区第五届MeetUp ——HBase技术解析及应用实践(深圳站)
查看>>
javascript高程3 学习笔记(三)
查看>>
lsof命令
查看>>
阿里云云计算ACP考试知识点(标红为重点)
查看>>
Unhandled event loop exception PermGen space
查看>>
从零开始来看一下Java泛型的设计
查看>>
嵌入式WiFi芯片价格战已经打响 MCU企业该醒悟了
查看>>
Sonnedix收购意大利11.2MW光伏电站产品组合
查看>>
《版式设计——日本平面设计师参考手册》—第1章应用对象样式
查看>>
简洁强大的JavaWeb框架Blade
查看>>
【LINUX学习】链接文件
查看>>
Codeforces Round #323 (Div. 2) C.GCD Table
查看>>
fedora17的gnome3桌面美化
查看>>
Java类的继承总结
查看>>
我的友情链接
查看>>
JavaScript格式化数字显示格式
查看>>