leetcode160 相交链表
编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
在节点 c1 开始相交。
示例 1:
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
示例 2:
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
示例 3:
输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
解释:这两个链表不相交,因此返回 null。
注意:
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
思路:相交的链表,一定是同一个尾,所以先遍历两个链表,顺便统计长度。
判断是否相交。
让长的那个先走长出的那部分,然后两边一起往后走,一定会相交。
/*** 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) {if(headB==null || headA==null){return null;}ListNode tempA=headA;ListNode tempB=headB;int a=0;int b=0;while(tempA.next!=null){tempA=tempA.next;a++;}while(tempB.next!=null){tempB=tempB.next;b++;}if(tempB!=tempA){return null;}tempA=headA;tempB=headB;if(a>b){for(int i=0;i<a-b;i++){tempA=tempA.next;}}else{for(int i=0;i<b-a;i++){tempB=tempB.next;}}while(tempB!=tempA){tempA=tempA.next;tempB=tempB.next;}return tempA;}
}
leetcode160 相交链表相关推荐
- Leetcode160. 相交链表
Leetcode160. 相交链表 题目: 编写一个程序,找到两个单链表相交的起始节点. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...
- 47 - 算法 - Leetcode-160 -相交链表
// 链表对齐 - 160 相交链表class Solution {public:ListNode *getIntersectionNode(ListNode *headA, ListNode *he ...
- [Swift]LeetCode160. 相交链表 | Intersection of Two Linked Lists
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode160.相交链表
题目来源:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/description/ 题目描述: 解法一: 先统计两根 ...
- 【每日一算法】相交链表
微信改版,加星标不迷路! 每日一算法 - 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, l ...
- 《LeetCode力扣练习》第160题 相交链表 Java
<LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...
- leetcode 160 简单难度 相交链表
160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], li ...
- 文巾解题 160. 相交链表
1 题目描述 2 解题思路 2.1 哈希表 遍历listA,把每个节点(以及后继节点)放入一个list中.遍历完A之后遍历B,如果B的某个节点(以及后继节点)在这个list中,那么我们就找到了相交的部 ...
- LeetCode-链表-160. 相交链表
160. 相交链表 思路一:使用set用到了额外的内存,没有达到题目要求 /*** Definition for singly-linked list.* struct ListNode {* int ...
最新文章
- 为什么css一开始需要设定margin和padding为 0px?
- Hadoop ssh配置设置
- TLSNotary中心化预言机(1) TLS1.1协议
- FAQ接口自动化_转载参考
- python中布尔类型是特殊的_Python中的特殊方法以及应用详解
- 网络(6)-TCP/IP对拥塞控制、滑动窗口如何实现可靠性?
- tab页签切换----bootstrap
- 大数据分析为啥越来越重要
- 配置管理工具---SVN
- 听说你还不理解JavaScript闭包
- C/C++教程 第十七章 —— MFC开发多人聊天室
- Dev中ChartControl——属性熟悉与简单应用
- Linux档案与目录管理
- 学弟学妹们,如果你想吃透 Java字节码的话,看这篇就好了!(超级硬核,建议收藏)
- 计算机在饲养管理方面的应用,高新技术对奶牛业的应用
- 期货市场计算机技术指难,期货交易中最重要的是什么?最难的是什么?
- Arduino + W5100调试笔记(1)
- 酒店无线产品认证靠谱吗
- 夏敏捷的24部著作(2019年)
- 苹果录屏精灵_iPhone自带投屏与录屏,3分钟教你操作!
热门文章
- javapanel根据内部组件_[译]避免在unmounted组件上调用setState
- 左右伸缩_冬季装修为啥要留伸缩缝?等到天热地板开裂就晚了!合肥人注意下...
- UE4打包后如何调试
- 保存hbitmap到文件
- 为Cubieboard打造完美Debian系统
- Iterator模式
- WinCE流设备驱动简介及GPIO驱动的实现
- 【转】ABP源码分析三:ABP Module
- ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别
- c#进阶(6)—— 网络通信基础知识