题目要求:
有两升序链表,给定两个链表的头指针headA和headB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值。
思路:
遍历两个链表,当A元素比B元素小时,headA 向后移一个位置;A元素比B元素大时,headB向后移一个位置。相等时将元素记录到vector中。
headA和headB 有一个为空时,跳出循环,返回vector。
代码实现:
/*
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> result;
while(headA!=NULL && headB != NULL){
if(headA->val == headB->val){
result.push_back(headA->val);
headA = headA->next;
headB = headB->next;
}
else if(headA->val < headB->val){
headA = headA->next;
}
else{
headB = headB->next;
}
}
return result;
}
};