1. 题目

给你两个数组,arr1 和 arr2,

arr2 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。

示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]提示:arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每个元素 arr2[i] 都出现在 arr1 中

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/relative-sort-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先对arr1的元素个数计数map
  • 从arr2顺次去map中查找 arr1元素的个数,push进入ans
  • 对arr1排序,将不在arr2中的元素顺次push进ans

class Solution {public:vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {map<int,int> m;set<int> s;for(int i = 0; i < arr1.size(); ++i){if(m.find(arr1[i]) == m.end())m[arr1[i]] = 1;elsem[arr1[i]]++;}for(int i = 0; i < arr2.size(); ++i)s.insert(arr2[i]);vector<int> ans;int count;for(int i = 0; i < arr2.size(); ++i){count = m[arr2[i]];while(count--)ans.push_back(arr2[i]);}sort(arr1.begin(), arr1.end());for(int i = 0; i < arr1.size(); ++i){if(s.find(arr1[i]) == s.end())ans.push_back(arr1[i]);}return ans;}
};

LeetCode 1122. 数组的相对排序相关推荐

  1. LeetCode 1122 数组的相对排序-简单-unordered_map容器的应用

    给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...

  2. 【Leetcode -1609.奇偶树 -1122.数组的相对排序】

    Leetcode Leetcode -1609.奇偶树 Leetcode -1122.数组的相对排序 Leetcode -1609.奇偶树 题目:如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : ...

  3. 【LeetCode】1609. 奇偶树、1122. 数组的相对排序

    作者:小卢 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民日报> 16 ...

  4. 1122. 数组的相对排序

    链接:1122. 数组的相对排序 题解: class Solution {public:vector<int> relativeSortArray(vector<int>&am ...

  5. C++算法学习(力扣:1122. 数组的相对排序)

    给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...

  6. 3、leetcode 697 数组的度

    leetcode 697 数组的度 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值. 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最 ...

  7. angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据

    [LeetCode] 442. 数组中重复的数据 题目链接: https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 难度:中 ...

  8. 弟中弟的Leetcode总结——数组类(四)

    弟中弟的Leetcode总结--数组类(四) 题目描述 Two Sum Given an array of integers, return indices of the two numbers su ...

  9. LeetCode第969题 煎饼排序

    LeetCode第969题 煎饼排序 题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr. ...

最新文章

  1. 2015年的ResNet潜力都挖掘出来了吗?新研究:不用蒸馏、无额外数据,性能还能涨一波...
  2. SQL SERVER 2008的错误日志太大的解决办法
  3. iPhone 7卖点不多出货量下降?剧透分析师又发报告
  4. SyncNavigator数据库同步软件8.4.1 中文版
  5. 桥接模式源码解析(jdk)
  6. SAP Cloud for Customer Cloud(C4C)Application Studio里的代码调试
  7. android studio on/off 切换开关,如何使用android studio中的开关小部件来启用/禁用函数()?...
  8. 少儿编程:C++绘图相关书籍篇
  9. PyTorch扩展自定义PyThon/C++(CUDA)算子的若干方法总结
  10. 学java还是python还是php-大一的时候学习Python,大二学java好还是php?
  11. Linux启动syslog进程,linux – 使用systemd启动的进程正在记录到/ var / log / syslog和/var/log/daemon.log...
  12. z tree 如何把选中的节点保存为标准的json格式_为什么MongoDB使用B-Tree?
  13. Python判断字符类型
  14. 上下班成最远的距离...
  15. 《高质量程序设计指南:C++/C语言》图书信息
  16. Python语法糖系列
  17. 阿里云Maven仓库
  18. Air720模块Linux USB驱动以及PPP拨号说明
  19. python画线段代码_python画线代码
  20. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 数字识别

热门文章

  1. 第一季5:Hi3518EV200的环境搭建
  2. 数据结构探险——树篇
  3. Leetcode389
  4. java 3种单例模式
  5. 【记录】有关parseInt的讨论
  6. 一个简单的高并发的回应服务器(5万并发)
  7. 一个整数转换成字符串(C/C++自己写的算法)
  8. strcpy()源代码
  9. 我是如何使用wireshark软件的
  10. 指针的基本操作(10.1 Basic Pointer Operations)