160. Intersection of Two Linked Lists
来源:互联网 发布:提高手机网速软件 编辑:程序博客网 时间:2024/05/17 04:20
题目:
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.
Notes:
- If the two linked lists have no intersection at all, return
null
. - The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
(1)首先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个节点。
(2)在第二次遍历的时候,在较长的链表上先走若干步,接着同时在两个链表上遍历,找到第一个相同的结点就是他们的第一个公共结点。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA==NULL or headB==NULL)return NULL; int length1=getLength(headA), length2=getLength(headB); int dist = abs(length1-length2); ListNode *Long_head = headB, *Short_head = headA; if(length1>length2) { Long_head = headA; Short_head = headB; } while(dist>0) { Long_head = Long_head->next; dist--; } while(Long_head!=NULL and Short_head!=NULL) { if(Long_head==Short_head) return Short_head; Long_head = Long_head->next; Short_head = Short_head->next; } return NULL; } int getLength(ListNode *head) { if(head==NULL)return 0; int count = 1; while(head->next!=NULL) { count++; head = head->next; } return count; }};
0 0
- [LeetCode]160.Intersection of Two Linked Lists
- LeetCode 160. Intersection of Two Linked Lists
- 【LeetCode】160.Intersection of Two Linked Lists
- [leetcode] 160.Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- [LeetCode]160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- LeetCode--160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- LeetCode 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 【LeetCode】160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists
- 给图片增加高斯模糊效果
- 线性代数的本质
- webx框架 实现文件上传保存服务器 解析
- hdu 1240 Asteroids!
- C#基础
- 160. Intersection of Two Linked Lists
- 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清
- SQlite
- next_permutation的思想和用法
- 第3周项目2-本月有几天
- 加法变乘法
- java用itext 做pdf报表
- Linux 安装jdk、tomcat
- C++复习要点总结之二——函数