LeetCode[1122]数组的相对排序

news2025/1/10 21:22:11

难度:Easy

题目:

给你两个数组,arr1 和 arr2arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中。

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


示例 1:

输入: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]

 示例 2:

输入:arr1 = [28,6,22,8,44,17], arr2 = [22,28,8,6]
输出:[22,28,8,6,17,44]

提示:

  • 1 <= arr1.length, arr2.length <= 1000
  • 0 <= arr1[i], arr2[i] <= 1000
  • arr2 中的元素 arr2[i] 各不相同
  • arr2 中的每个元素 arr2[i] 都出现在 arr1 中

Related Topics

  • 数组
  • 哈希表
  • 计数排序
  • 排序

重点!!!解题思路

第一步:

明确解题手段,题中要求arr1按照arr2的顺序来输出,那么我们需要统计arr2中的元素在arr1中出现的次数,这样的话我们就需要使用计数排序。 

第二步:

知道了arr2中元素在arr1中出现的次数,那么我们就可以对应着arr2来进行输出映射,当arr2遍历后,arr1剩余的部分依次输出

源码+讲解:

class Solution {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
        int[] cnt=new int[1005];  //题中范围1000
        for(int x:arr1) cnt[x]+=1;  //统计arr1中每个元素出现的次数
        int k=0;
        for (int x:arr2){  //如果是arr2中的值就依次输出
            while (cnt[x]-->0) arr1[k++]=x;  //每次输出完要将值减小到<0  方便后续操作
        }
        for (int i=0;i<cnt.length;i++){  //遍历cnt数组,arr1中的剩余值要依次输出
            while (cnt[i]-->0) arr1[k++]=i;
        }
        return arr1;  //值都拷贝到arr1中 就不要开辟额外的存储空间了
    }
}

 运行结果:

如果您还有什么疑问或解答有问题,可在下方评论,我会及时回复。

系列持续更新中,点个订阅吧,喜欢练习算法那就点个攒吧 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/867966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从Spring源码看Spring如何解决循环引用的问题

Spring如何解决循环引用的问题 关于循环引用&#xff0c;首先说一个结论&#xff1a; Spring能够解决的情况为&#xff1a;两个对象都是单实例、且通过set方法进行注入。 两个对象都是单实例&#xff0c;通过构造方法进行注入&#xff0c;Spring不能进行循环引用问题&#x…

【果树农药喷洒机器人】Part7:静态PWM变量喷药实验

文章目录 一、引言二、静态PWM变量喷药实验2.1搭建喷药实验平台2.2变量喷药控制实验 一、引言 为综合评估所设计的果树喷药机器人变量喷药效率和质量&#xff0c;验证系统的控制性能和实际作业的可行性&#xff0c;本章开展果树变量喷药实验。首先&#xff0c;通过静态的PWM变…

x11 gtk qt gnome kde 之间的区别和联系

Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层&#xff1a;X Server、X Client和X协议。 最底层的X Server&#xff08;X服务器&#xff09;主要处理输入/输出信息并维护相关资源&#xff0c;它接受来自键盘、鼠标的操作并将…

CTF之逆向之阿里巴巴

题目地址&#xff1a;http://www.shiyanbar.com/ctf/13 题目预览&#xff1a; 解题过程&#xff1a; 1、下载附件发现是exe文件 2、使用PEid和Detect It Easy查壳 和 开发语言&#xff0c;发现没有加壳&#xff0c;都是用C#开发的 3、C#和Java Python属于解释型语言&#xff…

互联网医院办理|沈阳互联网医院|医疗行业新机遇

互联网医院的办理不仅能为人们带来更便利、高效的医疗服务&#xff0c;更能缓解医疗资源紧张的问题&#xff0c;推动医疗服务的质量和效率提升。在这个充满信息化和科技变革的时代&#xff0c;互联网医院无疑是医疗行业向前迈进的重要一步。 1、提供全天候的医疗服务&#xff1…

spring的aop动态代理对象注入时机

bean生命周期&#xff1a; bean实例化populateBean填充属性invokeAwareMethods调用aware方法postProcessBeforeInitialization后置处理器before方法initializeBean初始化beanpostProcessAfterAfterInitialization后置处理器after方法 代理对象注入有两种情况&#xff1a;提前和…

RAM不够?CUBEIDE使用CCMRAM

RAM不够&#xff1f;使用CCMRAM 文章目录 RAM不够&#xff1f;使用CCMRAM打开连接LD文件&#xff1a;添加代码添加标识宏使用 打开连接LD文件&#xff1a; 添加代码 在SECTIONS段最后加上下面代码&#xff1a; _siccmram LOADADDR(.ccmram); /* CCM-RAM section * * IMPORTAN…

C++11语法笔记

文章目录 一.类中新增的默认成员函数:移动赋值和移动构造二.lambda表达式三.包装器bind函数 一.类中新增的默认成员函数:移动赋值和移动构造 二.lambda表达式 三.包装器 bind函数

spss数据分析--相关性分析与酷炫图

相关性分析与酷炫图 今天就来说说R语言怎么进行相关性分析。 首先&#xff0c;安装两个R包&#xff0c;其中“corrplot”包就能画出好多酷炫的相关性矩阵图。“pheatmap”包是用来画热力图的。 我们调用R里自带的数据集&#xff0c;今天调用的这个是关于汽车道路测试的各项指标…

【力扣每日一题】2023.8.12 合并K个升序链表

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个链表数组&#xff0c;数组里的链表都是升序的&#xff0c;让我们合并这些链表&#xff0c;要求合并之后还是升序的。 最简…

倒数纪念日-生日提醒事项时间管理倒计时软件

倒数纪念日​​​​​​​是一款功能强大的时间管理、事项提醒软件。帮你更好的管理倒数日、纪念日、生日、节假日、还款日等各种重要日子&#xff0c;通知提醒&#xff0c;让你不再错过生命中的每一个重要日子。 【功能简介】 分类管理&#xff1a;倒数日、纪念日、自定义分类…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据 dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfile):print("{mdxfile} not found!&…

uniapp 自定义手机顶部状态栏不生效问题

想要的效果想淘宝一样&#xff0c;底色覆盖到手机顶部&#xff0c;找了两天都没找到原因&#xff0c;过程很艰苦&#xff0c;直接上结果吧 项目是后来接手的&#xff0c;最终原因出在这&#xff0c; "immersed" : false>设置为 true 就可以了&#xff0c;沉浸式样…

学习pytorch1环境安装

学习pytorch 1. 环境安装配置镜像源conda命令记录图像相关代码遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main…

刷题记录(2023-08-12)

1. 小美的排列询问 AC代码&#xff1a; #include <iostream> #include <vector> using namespace std;int main() {int n;cin >> n;vector<int> nums(n);int a, b;for (int i 0; i < n; i) {cin >> nums[i];}cin >> a >> b;for…

javaScript:for循环的认识与使用,以及奇葩for循环

目录 前言 基本的 for 循环通常有三个关键组成部分 一.javaScript中的循环都有那些&#xff08;补充&#xff09; 二.for循环​ 语法/理解​ 执行过程&#xff08;重点&#xff09;​ 注意 三. 基本for循环小练习 1.求1-100的偶数和&#xff0c;包含1和100 2.求1-100中…

DOM的节点操作+事件高级+DOM事件流+事件对象

一.节点操作 1.父节点: node.parentNode 得到的是离元素最近的父级节点 2.子节点: parentNode.childNodes 所有的子节点 包含元素节点 文本节点等等parentNode.children (非标准) 获取所有的子元素节点,实际开发常用 parentNode.firstChild 获取…

JAVA基础补充(Comparable排序接口的实现)

JAVA基础补充&#xff08;Comparable排序接口的实现&#xff09; Comparable接口的实现&#xff1a;没有实现Comparable接口时&#xff0c;取出来的值无法排序如果进行排序&#xff1a;实现接口进行排序&#xff1a;Controller层的实现实体类的实现 复习时间&#xff1a;2023/0…

Spring Cloud面试突击班1

Spring Cloud面试突击班1 1.Spring Cloud 中有哪些组件&#xff0c;整个项目架构中我们的重点又有哪些&#xff1f; Spring Cloud 是一套基于Spring Boot的微服务解决方案。 Spring Cloud生态在国内主流的分为两套&#xff0c;一套是以奈飞开源的Spring Cloud Netfilx 20%&a…

Fiddler抓包工具详细使用教程

各位做测试的同学想必对抓包工具fiddler并不陌生&#xff0c;但是很多同学可能没有总结过它的用法&#xff0c;下面我总结了fiddler一些常用的用法。 Web端抓包配置 打开Fiddler&#xff0c;Tools -> Fiddler Options -> HTTPS 配置完后记得要重启Fiddler 选中Decrpt …