千家信息网

怎么理解LeetCode关于数组的相对排序

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"怎么理解LeetCode关于数组的相对排序"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2026年11月03日怎么理解LeetCode关于数组的相对排序

本篇内容介绍了"怎么理解LeetCode关于数组的相对排序"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  给你两个数组,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 中

  1、C++

  先遍历arr1中的元素个数,然后遍历arr2按照arr1中对应元素的个数添加进结果数组中,最后将剩余的arr1中的元素按照原顺序的元素个数循环添加。

  class Solution {

  public:

  vector relativeSortArray(vector& arr1, vector& arr2) {

  map m;

  int s1 = arr1.size(), s2 = arr2.size();

  vector res;

  for(int i=0;i

  auto iter = m.find(arr1[i]);

  if(iter!=m.end()){

  int temp = m[arr1[i]]+1;

  m.erase(arr1[i]);

  m.insert(pair(arr1[i], temp));

  }else{

  m.insert(pair(arr1[i], 1));

  }

  }

  for(int i=0;i

  auto iter = m.find(arr2[i]);

  if(iter!=m.end()){

  for(int j=0;jsecond;j++){

  res.push_back(iter->first);

  }

  m.erase(iter);

  }

  }

  for(auto i=m.begin();i!=m.end();i++){

  for(int k=0;ksecond;k++){

  res.push_back(i->first);

  }

  }

  return res;

  }

  };

  2、桶排序郑州妇科医院哪家好 http://fk.zyfuke.com/

  先统计arr1中元素的数量,注意索引是arr1中的值,然后把arr2中的数按顺序拿完,在把桶中剩下的按顺序拿完。

  public int[] relativeSortArray(int[] arr1, int[] arr2) {

  int[] nums = new int[1001];

  int[] res = new int[arr1.length];

  //遍历arr1,统计每个元素的数量

  for (int i : arr1) {

  nums[i]++;

  }

  //遍历arr2,处理arr2中出现的元素

  int index = 0;

  for (int i : arr2) {

  while (nums[i]>0){

  res[index++] = i;

  nums[i]--;

  }

  }

  //遍历nums,处理剩下arr2中未出现的元素

  for (int i = 0; i < nums.length; i++) {

  while (nums[i]>0){

  res[index++] = i;

  nums[i]--;

  }

  }

  return res;

  }

  3、python

  直接将arr2加上arr1减去arr2中的元素,并按照从小到大排序。然后按照arr2中的下标的顺序对arr1进行排序,其余的按照原来的顺序。

  class Solution:

  def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:

  arr2 += sorted(set(arr1)-set(arr2))

  arr1.sort(key=arr2.index)

  return arr1

"怎么理解LeetCode关于数组的相对排序"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

元素 顺序 排序 数组 相同 个数 内容 数量 更多 知识 处理 统计 输出 实用 从小到大 学有所成 接下来 下标 两个 从小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 中国互联网科技工作委员会毛军 互联网的科技 A股互联网金融科技公司 科技与互联网 工业互联网科技新基建 互联网科技金融公司 期待互联网科技 美国互联网黑科技 北京三清互联网科技 字节跳动和互联网科技 互联网软件和科技 移动互联网科技公司 互联网新科技动漫ppt素材 合肥互联网科技公司公章图片 互联网金融科技元年 工业互联网科技成果转化 下一代互联网重大应用科技园 互联网金融运营模式中的金融科技 众联互联网络科技 互联网科技美容 本届互联网博览会上的黑科技 浙南科技城互联网大厦建设工程 江苏互联网科技小贷 山东大美朱楼互联网科技有限公司 新氧科技和美国互联网有关系吗 福州德业互联网科技 广西泛欧互联网科技有限公司 互联网科技创业有什么好项目 武汉亿视互联网科技有限公司
0