面试题目:打印两个链表的公共值
题目:
现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。
给定两个链表的头指针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; }};
浙公网安备 33010602011771号