c_cpp 在(a)未对它们进行排序时,查找两个链表的公共元素(b)对它们进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 在(a)未对它们进行排序时,查找两个链表的公共元素(b)对它们进行排序相关的知识,希望对你有一定的参考价值。

// two lists are sorted
vector<int> find_common_element_of_two_sorted_lists(ListNode *l1, ListNode *l2) {
    vector<int> res;
    if(!l1 || !l2) return res;
    ListNode *p1 = l1, *p2 = l2;
    unordered_set<int> se;
    while(p1 && p2) {
        if(p1->val == p2->val) {
            se.insert(p1->val);
            p1 = p1->next;          // forgot!!!
            p2 = p2->next;          // forgot!!!
        }
        else if(p1->val < p2->val)
            p1 = p1->next;
        else
            p2 = p2->next;
    }
    for(auto i : se) res.push_back(i);
    return res;
}

// two lists are unsorted
vector<int> find_common_element_of_two_unsorted_lists(ListNode *l1, ListNode *l2) {
    vector<int> res;
    if(!l1 || !l2) return res;
    unordered_set<int> se;
    ListNode *p1 = l1, *p2 = l2;
    for(; p1; p1=p1->next) 
        se.insert(p1->val);
    for(; p2; p2=p2->next) {
        if(se.find(p2->val) != se.end())
            res.push_back(p2->val);
    }
    return res;
}

以上是关于c_cpp 在(a)未对它们进行排序时,查找两个链表的公共元素(b)对它们进行排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记-排序/队/栈/链/堆/查找树/红黑树

将二叉查找树转换成有序双向链表

查找列中的唯一值,然后对它们进行排序

c_cpp 在三个排序的数组中查找公共元素

在列表中查找多个值并在新工作表中对它们进行排序

c_cpp 查找已排序数组中给定数字的出现次数