当前位置:首页 > 编程笔记 > 正文
已解决

力扣面试题02.07.链表相交

来自网友在路上 169869提问 提问时间:2023-11-01 18:44:06阅读次数: 69

最佳答案 问答题库698位专家为你答疑解惑

原题链接:力扣面试题02.07.链表相交

思路
两个长度不确定是否一致的链表,如果相交,那么一定是有一个链表结点相同,注意不是值相同而是结点相同,也就代表了是需要指针是相同的才行

根据图可以得出,相交后的结点都是一致的,那么需要做的就是把两个链表长度统一,再从头结点逐步遍历,直至指针结点相同,返回相同的指针结点即可
如果没有相同的指针结点 则代表没有相交 返回NULL

全代码:

/*** 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) {//遍历headA链表和headB链表的长度ListNode* curA = headA;ListNode* curB = headB;int lenA = 0,lenB = 0;while(curA != NULL){curA = curA ->next;lenA++;}while(curB != NULL){curB = curB ->next;lenB++;}if(lenB > lenA){//需要让lenA成为长度最长的链表swap(lenA,lenB);swap(headA,headB);}int len = lenA - lenB;while(len--){headA = headA ->next;}curA = headA;curB = headB;while(curA != NULL){if(curA == curB){return curA;}curA = curA ->next;curB = curB ->next;}return NULL;}
};
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"力扣面试题02.07.链表相交":http://eshow365.cn/6-29531-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!