当前位置:网站首页>2022.08.01_每日一题
2022.08.01_每日一题
2022-08-05 11:48:00 【诺.い】
剑指 Offer 52. 两个链表的第一个公共节点
题目描述
输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:

在节点 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) 内存。
- 本题与主站 160 题相同:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
coding
1. 借用 List 存储,然后遍历另一条链表,通过判断节点是否已存在,判断是否相交
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */
class Solution {
ListNode getIntersectionNode(ListNode headA, ListNode headB) {
List<ListNode> list = new ArrayList<>();
ListNode cur1 = headA;
while (cur1 != null) {
list.add(cur1);
cur1 = cur1.next;
}
ListNode cur2 = headB;
while (cur2 != null) {
if (list.contains(cur2)) {
return cur2;
}
cur2 = cur2.next;
}
return null;
}
}
2. 如果两链表相交,则结尾部分必然相同,节点数量也相同,先把开头部分必然不可能相交的节点过滤
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */
class Solution {
ListNode getIntersectionNode(ListNode headA, ListNode headB) {
// 记录两条链表的长度
int len1 = 0, len2 = 0;
ListNode cur1 = headA;
while (cur1 != null) {
len1 ++;
cur1 = cur1.next;
}
ListNode cur2 = headB;
while (cur2 != null) {
len2 ++;
cur2 = cur2.next;
}
ListNode temp1 = len1 > len2 ? headA : headB;
ListNode temp2 = len1 > len2 ? headB : headA;
int cnt = Math.abs(len1 - len2);
// 把链表长度较长的temp1把多余的长度过滤(相交必然导致共有部分的节点数量是一样多的)
while (cnt-- > 0) {
temp1 = temp1.next;
}
// 剩余节点数量相同时,遍历结尾部分的节点判断是否存在相交的情况(temp1 == temp2)
while (temp1 != null) {
if (temp1 == temp2) {
return temp1;
}
temp1 = temp1.next;
temp2 = temp2.next;
}
return null;
}
}
边栏推荐
- Five reasons why developers choose Klocwork, a static analysis tool for code quality, for software security
- 内存问题难定位,那是因为你没用ASAN
- hdu4545 魔法串
- Gray value and thermal imaging understanding
- Mathcad 15.0软件安装包下载及安装教程
- 623. 在二叉树中增加一行 : 简单二叉树遍历运用题
- JS 从零手写实现一个call、apply方法
- Machine Learning - Ensemble Learning
- 2022 极术通讯-基于安谋科技 “星辰” STAR-MC1的灵动MM32F2570开发板深度评测
- 解决运行文件消失、C盘空间不断缩小而且找不到文件位置的问题
猜你喜欢

查询优化(TTFB过长)left join索引未生效

Integration testing of software testing

The training set Loss converges, but the test set Loss oscillates violently?

Gao Zelong attended the Boao Global Tourism Ecology Conference to talk about Metaverse and Future Network Technology
The principle and application scenario of mysql master-slave synchronization

【HMS core】【FAQ】Health Kit、Ads kit、push Kit典型问题合集5

祝所有码农七夕快乐~

163_技巧_Power BI 一键批量建立自定义字段参数

解决2022Visual Studio中scanf返回值被忽略问题

内存问题难定位,那是因为你没用ASAN
随机推荐
查询优化(TTFB过长)left join索引未生效
使用Netty编写通用redis客户端(可指定服务器地址与端口号连接任意redis)
STM32H743IIT6学习笔记01——CubeMX新建工程文件
Can't get in to ask questions.I want to ask you a question about the return value (traversal of the graph), please give Xiaobai an answer.
有多一只“手”的机器狗出没?就在昇腾AI开发者创享日·南京站
Linux: Remember to install MySQL8 on CentOS7 (blog collection)
后缀自动机(SAM)——黑盒使用方案
power failure...Trouble trouble trouble!!!
hdu 1870 愚人节的礼物 (栈)
Support Vector Machine SVM
WingIDE 7.2.0 远程调试
Five reasons why developers choose Klocwork, a static analysis tool for code quality, for software security
Apache APISIX Ingress v1.5-rc1 发布
Keras 模型多输出 loss weight metrics 设置
Naive bayes
灰度值与热成像理解
PHP高级检索功能的实现以及动态拼接SQL
2022杭电多校联赛第六场 题解
TiDB 6.0 Placement Rules In SQL Usage Practice
Go编译原理系列9(函数内联)