剑指 Offer 52. 两个链表的第一个公共节点
题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧:
考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: 两个链表的第一个公共节点
题目描述:
输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:
在节点 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 个节点。
注意:
- 如果两个链表没有交点,返回 null.
- 在返回结果后,两个链表仍须保持原有的结构。
- 可假定整个链表结构中没有循环。
- 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
思路
:
用的双指针做法(个人感觉十分优雅)
我们同时操作两个链表
我们需要考虑两种情况:第一种情况是两个链表相交,第二种情况是两个链表不相交
情况1:两个链表相交时
情况二:两个链表不相交时,分析过程和上面的一样,这里不再重复了
我们来看看成功AC的代码吧:
/*** 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) {ListNode* A = headA;ListNode* B = headB;if(headA==NULL||headB==NULL) return NULL;while(A!=B){A=A==NULL?headB:A->next;B=B==NULL?headA:B->next;}return A;}
};
谢谢你的阅读
,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!
剑指 Offer 52. 两个链表的第一个公共节点相关推荐
- 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点
[LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...
- 【Java】剑指 Offer 52. 两个链表的第一个公共节点
题目 :输入两个链表,找出它们的第一个公共节点. 算法思路 : 首先我们要明确,两个链表相交,是Y形状的 两个链表相交,是next域相同 因为两个单链表的长度是不一样的,所以我们需要让长的那个链表,引 ...
- 剑指 Offer 52. 两个链表的第一个公共节点(C语言)
*输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...
- 【算法】剑指 Offer 52. 两个链表的第一个公共节点
文章目录 1.概述 2. 有序 3. 循环 4. set集合 1.概述 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交.
- 剑指 Offer 52—— 两个链表的第一个公共节点
题目链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 输入两个链表 ...
- LeetCode-剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点 思路一:用set容器,不符合题意 /*** Definition for singly-linked list.* struct ListNode ...
- 《剑指offer》两个链表的第一个公共节点
题目:输入两个链表,找出它们的第一个公共结点. 解析:暴力更直接.直接遍历两个链表分别存储到list1.list2,然后在list1和list2中找公共节点就好了 /* public class Li ...
- 剑指Offer之两个链表的第一个公共节点
题目描述 输入两个链表,找出它们的第一个公共结点. 解题思路 首先,如果都是空链表,那么肯定返回空.两个单链表假设有公共节点,那么肯定是"Y"字型的. 先计算两个链表的长度,求出长 ...
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...
最新文章
- ActiveMQ与xml rpc
- 数据导入HBase最常用的三种方式及实践分析
- F - Monkey Banana Problem
- 鞋带的超炫系法-真是门艺术[转载]
- [YTU]_2018 ( 约瑟夫问题)
- Sublime Text 3 快捷键总结
- abs std::abs_ABS的完整形式是什么?
- php 替换某个字符,php中如何替换字符串中的某个字符-PHP问题
- 李开复-如果你已经过了20岁但还不到25岁
- Mysql8.0 15安装后怎么打开_mysql-8.0.15-winx64 解压版安装 图文详解
- 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
- eclipse svn插件安装_eclipse 2020-03 (4.15.0) SVN 插件在线安装教程
- 惠普z800工作站bios设置_HP工作站BIOS说明书适用Z228Z440Z230Z640Z840Z800Z620Z420Z820主板设置.doc...
- ubuntu使用Firefox无法播放视频
- drawio中添加数学公式
- 想要成功,你得像剥洋葱一样一层一层地撕开自己
- 看最强大脑中英PK小记
- 复制一个维基百科!—— 维基技术梳理
- Simulink 环境基础知识(二十六)--信号基础知识
- jQuery基础二DOM操作