
【leetcode】1122. 数组的相对排序(relative-sort-array)(模拟)[简单]
统计元素出现次数:首先遍历arr1,使用哈希表记录每个元素的出现次数。 处理arr2中的元素:遍历arr2,对于每个元素,按照哈希表记录的次数,将该元素重复加入结果数组,同时记录该元素已处理。 处理未在arr2中的元素:遍历哈希表,找出未在arr2中的元素,将它们按升序排序后,加入结果数组的末尾。 统计元素出现次数:使用 处理arr2中的元素:遍历arr2,对于每个元素,重复加入结果数组,次数由哈希表记录,同时记录元素已处理。 处理未在arr2中的元素:遍历哈希表,找出未在arr2中的元素,将它们按升序排序后,加入结果数组的末尾。
发布日期:2021-05-13 21:40:29
浏览次数:21
分类:精选文章
本文共 1259 字,大约阅读时间需要 4 分钟。
要解决的问题是对两个数组arr1和arr2进行处理,使得arr1排序后的相对顺序与arr2的相对顺序一致,并将arr1中不在arr2中的元素按升序放在末尾。
思路
解决代码
#include#include #include #include using namespace std;vector relativeSortArray(vector & arr1, vector & arr2) { unordered_map cnt; for (int x : arr1) { cnt[x]++; } vector ans; unordered_set flag; for (int x : arr2) { for (int i = 0; i < cnt[x]; ++i) { ans.push_back(x); } flag.insert(x); } vector res; for (auto& pair : cnt) { if (flag.find(pair.first) == flag.end()) { for (int i = 0; i < pair.second; ++i) { res.push_back(pair.first); } } } sort(res.begin(), res.end()); ans.insert(ans.end(), res.begin(), res.end()); return ans; }
代码解释
unordered_map
遍历arr1,记录每个元素的计数。这种方法确保了结果数组的相对顺序与arr2一致,并且未在arr2中的元素按升序排列在末尾,满足题目要求。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月04日 18时19分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python正则表达式一:match、search和findall
2019-03-12
点亮细胞171-180
2019-03-12
C++ Primer Plus读书笔记:c++字符串
2019-03-12
CSU 1757: 火车入站(区间覆盖的最大覆盖深度)
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
skimage与cv2 安装失败的解决办法
2019-03-12
linuxmint 上面装谷歌浏览器
2019-03-12
windows/linux下Anaconda管理的(安装的)包的位置
2019-03-12
关于吴恩达的深度学习的一些授课视频里面英文翻译错误的实例展示
2019-03-12
伴随矩阵和逆矩阵的关系证明
2019-03-12
反向传播之矩阵求导dL/dz1的求导过程 普通神经网络的逆向求导过程
2019-03-12
numpy.linspace使用详解
2019-03-12
突破Bias-Variance困境
2019-03-12
函数可导和可微的区别: 一元中互为充要;多元中可微是可导的必要条件,可导不一定可微。
2019-03-12
一文说尽C++赋值运算符重载函数(operator=)
2019-03-12
Form窗体属性
2019-03-12
Nintendo - NES Emulators 网站
2019-03-12
android market 开发者注册
2019-03-12