题目:
现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。
给定两个链表的头指针headA和headB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值
测试样例:
{1,2,3,4,5,6,7},{2,4,6,8,10}
返回:[2.4.6]
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class
Common {
public
:
vector<
int
> findCommonParts(ListNode* headA, ListNode* headB) {
// write code here
vector<
int
>out;
auto pt1=headA;
auto pt2=headB;
//循环:pt1和pt2谁小谁移动一个单位,相等则输出且一起移动一个单位 循环边界:一直移到其中一个为null
while
(pt1!=NULL&&pt2!=NULL){
if
(pt1->val<pt2->val){
pt1=pt1->next;
}
else
if
(pt1->val==pt2->val){
out.push_back(pt1->val);
pt1=pt1->next;
pt2=pt2->next;
}
else
{
pt2=pt2->next;
}
}
return
out;
}
};