51-Intersection of Two Linked Lists
来源:互联网 发布:mysql打开文件 编辑:程序博客网 时间:2024/05/17 01:17
- Intersection of Two Linked Lists My Submissions QuestionEditorial Solution
Total Accepted: 72580 Total Submissions: 239762 Difficulty: Easy
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.
思路:两条链表如果相交,那从交点开始,后面一定都是相等的
那如何求第一个交点呢?
时间复杂度:O(n)
要么返回空
有交点时,说明尾部是对齐的,要找到第一个交点,只要让长的链表先走len1-len2步,这里假设len1是那条长链,那么此时再同时走,相遇的第一个节点便是交点
/** * 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||headB==NULL)return NULL;//有一为空返回 if(headA==headB)return headA;//头部相同返回 ListNode *l1=headA,*l2=headB; int len1=1,len2=1; while(l1->next){//遍历记录长度 l1=l1->next; len1++; } while(l2->next){ l2=l2->next; len2++; } ListNode *p = len1>len2?headA:headB; //p为长链表 ListNode *psmall=len1>len2?headB:headA; //psmall为短链表 int count=abs(len2-len1); while(count--){ p=p->next; } while(p!=NULL&&psmall!=p){ p=p->next; psmall = psmall->next; } if(p!=NULL)return p; //有交点 else return NULL; //无交点 }};
0 0
- 51-Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- Intersection of Two Linked Lists
- 设计模式之适配器模式
- 第二篇博客
- java数组与集合的转换
- word2vec简介
- DOS
- 51-Intersection of Two Linked Lists
- babel5升级到babel6总结
- R语言︱机器学习模型评估方案(以随机森林算法为例)
- 掌握java中的三种代码块的定义及使用
- NDK开发入门篇
- 归并排序
- 【VS开发】关于各种View的实现总结
- JavaWeb学习笔记——JSP(2)
- 9.二进制中1的个数