求兩連結串列公共元素問題
阿新 • • 發佈:2018-12-22
題目要求:
有兩升序連結串列,給定兩個連結串列的頭指標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; } };