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 查找已排序数组中给定数字的出现次数