剑指Offer之两个链表的第一个公共节点
题目描述
输入两个链表,找出它们的第一个公共结点。
解题思路
首先,如果都是空链表,那么肯定返回空。两个单链表假设有公共节点,那么肯定是“Y”字型的。
- 先计算两个链表的长度,求出长度差
- 根据长度差,后移长链表的头指针,使得两个链表的现在的头指针的位置距离为节点一样
- 同步移动,直到指针相等,是Y型的连接处,也就是公共点;注意没有公共点的情况。
AC代码
class Solution {public:ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {if(pHead1 == nullptr || pHead2 == nullptr) { // 日常判空return nullptr;}int len1 = 0, len2 = 0;// 计算链1的长度ListNode* p = pHead1;while(p != nullptr) {++len1;p = p->next;}// 计算链2的长度p = pHead2;while(p != nullptr) {++len2;p = p->next;}// p1是长链,p2是短链auto p1 = (len1 > len2) ? pHead1 : pHead2;auto p2 = (len1 <= len2) ? pHead1 : pHead2;int len = max(len1, len2) - min(len1, len2);while(len > 0) { // 长链后移,同步长度p1 = p1->next;--len;}// 寻找公共节点,注意没有的情况while(p1 != p2 && p1 != nullptr) {p1 = p1->next;p2 = p2->next;}return p1;}
};
剑指Offer之两个链表的第一个公共节点相关推荐
- 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点
[LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...
- 剑指 Offer 52. 两个链表的第一个公共节点
题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...
- 【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/ 输入两个链表 ...
- 《剑指offer》两个链表的第一个公共节点
题目:输入两个链表,找出它们的第一个公共结点. 解析:暴力更直接.直接遍历两个链表分别存储到list1.list2,然后在list1和list2中找公共节点就好了 /* public class Li ...
- LeetCode-剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点 思路一:用set容器,不符合题意 /*** Definition for singly-linked list.* struct ListNode ...
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...
最新文章
- 离散数学 关系和有向图
- Prototype1.5.1源代码解读分析-1
- Zend Studio 8.0.1 官方汉化包安装 解决文本中文乱码
- linux中的c 环境变量,Linux C 参考手册 之 环境变量篇
- leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
- javaee 设计模式_JavaEE重新审视设计模式:装饰器
- ubuntu mysql开发_ubuntu linux mysql 开发模式与连接编译
- 2021零售行业营销自由白皮书
- 帝国CMS7.5仿金色财经整站源码+手机端+会员中心+投稿-财经综合门户
- 王思聪又双被限制消费了!
- java.math.BigDecimal cannot be cast to java.lang.Integer
- 机器视觉硬件选型相关知识
- 【MySQL基础 安装】CentOS 7 Yum网络部署 最新官方MySQL5 2020_2_1
- 小程序中如何引用阿里图标
- Asterisk增加g729编码支持
- IMU(陀螺仪)角速度测量原理-科氏力测旋转角速度
- android 颜色渐变扩散,Android 颜色渐变(gradient)的实现总结
- LLVM SSA 介绍
- Kafka CPU使用率高排查思路及解决方案
- Steam根目录下userdata文件夹命名规则
热门文章
- 高阻态是0还是1_羽毛球拍穿线,先拉横线还是竖线?是否横线要比竖线高1到2磅?...
- leetcode 273场周赛 Problem-C
- Resnet-18-训练实验-warm up操作
- L - Oil Deposits
- 2018年第九届蓝桥杯【C++省赛B组】【第六题:递增三元组】——二分解法
- Python遍历文件夹获取文件名并写入excel
- c/c++入门教程 - 2.4.5 c++运算符重载(加号、左移、递增、赋值、关系、函数调用)
- 解决百度云下载过慢、Linux下载百度云数据问题
- CodeBlocks常用快捷键
- 敏捷开发“松结对编程”系列之七:问题集之一