【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:[email protected]】
题目链接:https://leetcode.com/problems/intersection-of-two-linked-lists/
题意:
给定两个链表,要求找出这两个链表的交点
思路:
我们可以设定两个指针,分别遍历得到a,b的长度,然后如果a长,就将a的指针从头指针往下移动k位直到与b指针等长的位置,b链表长也是如此。
然后两个指针同时出发,一旦走到相同的位置,那么这个位置就是两个链表的交点
/** * 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) { int la = 0,lb = 0; ListNode *pa = headA; ListNode *pb = headB; while(pa) { la++; pa = pa->next; } while(pb) { lb++; pb = pb->next; } pa = headA; pb = headB; if(la<lb) { int cnt = lb - la; while(cnt--) { pb = pb->next; } } else if(la>lb) { int cnt = la - lb; while(cnt--) { pa = pa->next; } } while(pa!=pb) { pa = pa->next; pb = pb->next; } return pa; } };
版权声明:本文为博主原创文章,如果转载,请注明出处
时间: 2024-10-10 21:36:31