数据结构之链表:打印两个链表的公共值

来源:互联网 发布:想看地方台网络电视 编辑:程序博客网 时间:2024/05/16 01:39
题目:

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。

给定两个链表的头指针headAheadB,请返回一个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;
          
    }
 
};
0 0
原创粉丝点击