您的位置:首页 > 教育 > 培训 > 目前中国最好的网购平台_济南网app_安徽关键词seo_google永久免费的服务器

目前中国最好的网购平台_济南网app_安徽关键词seo_google永久免费的服务器

2025/3/21 0:49:49 来源:https://blog.csdn.net/xxxmmc/article/details/146330852  浏览:    关键词:目前中国最好的网购平台_济南网app_安徽关键词seo_google永久免费的服务器
目前中国最好的网购平台_济南网app_安徽关键词seo_google永久免费的服务器

题意

给定两个链表,找这两个链表第一个公共节点,如果没有返回nullptr

题目链接

https://leetcode.com/problems/intersection-of-two-linked-lists/description/

题解

两个指针分别从两个链表(记录为表A,表B)的表头出发,并且记录到表尾移动的步数,得到两个指针移动的步数之差 x x x。步数之差为正数,那么把表A的指针移动 x x x步,否则移动表B的指针 − x -x x步。然后两个指针移动到表尾,得到答案。

/*** 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 *p1 = headA;ListNode *p2 = headB;int cnt1 = 0;int cnt2 = 0;while(p1) {p1 = p1->next;cnt1++;}while(p2) {p2 = p2->next;cnt2++;}p1 = headA;p2 = headB;int cnt3 = abs(cnt1 - cnt2);if(cnt1 >= cnt2) {for(int i = 0; i < cnt3; i++) {p1 = p1->next;}} else {for(int i = 0; i < cnt3; i++) {p2 = p2->next;}            }while(p1 != p2 && p1 != nullptr) {p1 = p1->next;p2 = p2->next;}return p1 == nullptr ? nullptr : p1;}
};

算法复杂度: O ( m + n ) O(m+n) O(m+n) m m m n n n分别为两个表的长度
空间复杂度: O ( 1 ) O(1) O(1)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com