Leetcode 160.相交链表
难度:简单
频率:140
题目
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
解题方法:双指针遍历
解题思路:
- 1.假设两个链表没有相交,即两个指针分别遍历 两个链表(遍历完第一个直接遍历第二个head) 最后同时结束(同时为null)
- 2.假设两个链表相交,即最后肯定是有一小段是同一段。即Y的下面**[C]**。
- 3.而两个链表的总节点数总一定的**[A+C+B+C],最后又有一小段是一定的[C],故如果是相交,我们遍历完第一个链表,再遍历到相交点是的总节点数量是一定的[A+C+B=B+C+A]**,即同时动的话就会相交。
- 故只要同时遍历,并且判断是否两指针相等即可。
- 相等的情况有两种
- 第一种 没有相交,跟1说的一样,都是遍历到结尾null处,直接返回null即可。
- 第二种 相交,而且相等点即为相交点。
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1=headA,p2=headB;while(p1!=p2){p1=p1!=null?p1.next:headB;p2=p2!=null?p2.next:headA;}return p1;}
}
需要注意的地方:
1.遍历的时候,是遍历完第一个链表即返回第二个链表头节点head处。
2.遍历的时候,只要不是null,就next;
Leetcode 160.相交链表相关推荐
- Leetcode 160. 相交链表 解题思路及C++实现
解题思路: 先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点. /*** Definition for ...
- Leetcode 160 相交链表 (每日一题 20210802)
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null .图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中 ...
- [leetcode]160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- [leetcode] 160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- leetcode 160. 相交链表(双指针)
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- LeetCode 160. 相交链表
文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...
- LeetCode 160. 相交链表(c++实现)
思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...
- 【LeetCode】【HOT】160. 相交链表
[LeetCode][HOT]160. 相交链表 文章目录 [LeetCode][HOT]160. 相交链表 package hot;class ListNode{int val;ListNode n ...
- 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II
作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽. --<人民 ...
最新文章
- Boost--Graph
- LINUX ORACLE 启动与关闭
- 通过JS和CSS,实现网页加载中的动画效果
- tomcat7下配置session复制和nginx做负载均衡
- python批量删除_Python批量删除只保留最近几天table的代码实例
- NFS+rsync+inotify镜像
- 服务和服务帐户安全规划指南
- 网站备案中遇到的问题 名词和解释 大全
- 数据加密 ---- SHA 加密
- raid 0 1 5 10的区别以及应用
- 网络诈骗有哪些防范措施
- 使用 Kubernetes Ingress 对外暴露服务
- C# 读取或修改文件后缀
- 复习高数下册8-10章主要内容(简略版)
- P1551 亲戚(并查集)
- 考研数二第十讲 求导平面曲线的切线和法线以及曲率圆与曲率半径和弧微分
- 在mt6735中添加新的开机logo与开\关机动画
- 关于“顾问之路”的探讨与总结
- 我所知道的 11 条领导力(Ping++ CEO 金亦冶)
- 成都奔驰改装改装通风座椅 蔚一车改