今日学习的文章链接和视频链接
leetcode题目地址:面试题 02.07. 链表相交
代码随想录题解地址:代码随想录
题目简介
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null
。
看到题目的第一想法(可以贴代码)
1. 求出两个链表的长度lenA和lenB,定义双指针fast和slow,fast比slow快 | lenA - lenB | 个结点,一起遍历,直到两个指针的val相等。应该不用空的头结点。
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if (headA == null || headB == null){
return null;
}
int lenA = 0, lenB = 0;
ListNode a1 = headA, b1 = headB;
while (a1 != null){
lenA++;
a1 = a1.next;
}
while (b1 != null){
lenB++;
b1 = b1.next;
}
ListNode a2 = headA, b2 = headB;
if (lenA >= lenB){
for (int i = 0; i < (lenA-lenB); i++){
a2 = a2.next;
}
}else{
for (int i = 0; i < (lenB-lenA); i++){
b2 = b2.next;
}
}
boolean check = false;
while (a2 != null){
if (a2 == b2){
check = true;
break;
}
a2 = a2.next;
b2 = b2.next;
}
if (check == false){
return null;
}else{
return a2;
}
}
实现过程中遇到哪些困难
无
看完代码随想录之后的想法
【解题思路】和我的一致。
学习时长
12:05 ~ 12:40 解题成功
12:40 ~ 12:45 看视频题解、写博客
今日收获
无