Leetcode-每日一题【剑指 Offer II 075. 数组相对排序】

news2024/11/17 1:38:59

题目

给定两个数组,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]

提示:

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

解题思路

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

2.首先我们新建一个数组 temp ,然后遍历数组 arr1 ,统计出每个元素出现的的次数,并将出现的的次数填写在元素数值所对应的 temp数组下标的位置。

举个栗子:

3.之后,我们遍历 arr2 数组,将 temp 中的数按照 arr2 中的顺序填入 arr1 中,并将已经填入数组的 temp[num] 置为0。

4.最后再遍历 temp 数组将没有填入的元素填入 arr1 即可

代码实现

class Solution {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
        //遍历arr1,统计出每个元素出现的次数
        int[] temp = new int[1001];
        for(int num : arr1){
            temp[num]++;
        }
        //遍历arr2,以arr2的顺序将将元素填入arr1中
        int index = 0;
        for(int num : arr2){
            for(int i = 0; i < temp[num]; i++){
                arr1[index++] = num;
            }
            temp[num] = 0;
        }
        //遍历temp数组,将剩下的元素填入arr1中
        for(int i = 0; i < temp.length; i++){
            for(int j = 0; j < temp[i]; j++){
                arr1[index++] = i;
            }
    }
    return arr1;
    }
}

测试结果

 

 

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

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

相关文章

都2023年了还不会Node.js爬虫?快学起来!

爬虫简介 什么是爬虫 爬虫&#xff08;Web Crawler&#xff09;是一种自动化程序&#xff0c;可以在互联网上自动抓取网页&#xff0c;并从中提取有用的信息。 爬虫可以模拟人类浏览器的行为&#xff0c;自动访问网站、解析网页、提取数据等。 通俗来说&#xff0c;爬虫就像…

财报解读:新鲜感褪去后,微软直面AI的骨感现实?

微软交出了一份远观尚可&#xff0c;但近看承压的“答卷”。 北京时间2023年7月26日&#xff0c;微软披露了2023财年第四财季及全年财报。受生产力和业务流程部门和智能云部门等业务带动&#xff0c;微软第四财季营收561.89亿美元&#xff0c;同比增长8%&#xff1b;净利润200…

Java-day02(关键字,变量,进制转换,数据类型转换,运算符)

关键字&#xff0c;变量&#xff0c;进制转换&#xff0c;数据类型转换&#xff0c;运算符 1.关键字&#xff0c;保留字与标识符 Java区分大小写 1.1 关键字 定义:有特殊含义&#xff0c;用作专用的字符串&#xff08;单词&#xff09; 特点&#xff1a;关键字所以字母都为…

小程序 获取用户头像、昵称、手机号的组件封装(最新版)

在父组件引入该组件 <!-- 授权信息 --><auth-mes showModal"{{showModal}}" idautnMes bind:onConfirm"onConfirm"></auth-mes> 子组件详细代码为: authMes.wxml <!-- components/authMes/authMes.wxml --> <van-popup show…

vs2013 32位 编译的 dll,重新用vs2022 64位编译,所遇问题记录

目录 一、vs2013 32 DLL 转 VS2022 64 DLL 所遇问题 1、 LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900” 2、原先VS2013 现在 VS2022 导致的vsnprintf 重定义问题 3、 无法解析的外部符号 __vsnwprintf_s 4、无法解析的外部符号__imp__CertFreeC…

JGJ46-2005施工现场临时用电安全技术规范

为贯彻国家安全生产的法律和法规&#xff0c;保障施工现场用电安全&#xff0c;防止触电和电气火灾事故发生&#xff0c;促进建设事业发展&#xff0c;制定本规范。 本规范适用于新建、改建和扩建的工业与民用建筑和市政基础设施施工现场临时用电工程中的电源中性点直接接地的…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

ChatGPT漫谈(三)

AIGC(AI Generated Content)指的是使用人工智能技术生成的内容,包括文字、图像、视频等多种形式。通过机器学习、深度学习等技术,AI系统可以学习和模仿人类的创作风格和思维模式,自动生成大量高质量的内容。AIGC被视为继用户生成内容(UGC)和专业生成内容(PGC)之后的下…

JS判断类型的方法和对应的局限性

JS判断类型的方法和对应的局限性 一、typeof 返回&#xff1a; 该方法返回小写字符串表示检测数据属于什么类型&#xff0c;例如&#xff1a; 检测函数返回function 可判断的数据类型&#xff1a; undefined、string、number、function、boolean、object&#xff0c;symb…

百题千解计划【CSDN每日一练】Ctrl+X,Ctrl+V(附解析+多种实现方法:Python、Java、C、C++、go、C#、JavaScript)

你要变成什么样子,全看你自己的选择。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工智能领域优质创作者🏆 📝…

SAP财务系统中的“增值税”

1. 前言 在前一篇博客《SAP财务系统中的“复式记账法”》中&#xff0c;介绍了复式记账的基本原理&#xff0c;同时给出了在采购和销售流程中常见的记账科目&#xff0c;但也遗留了一些知识点&#xff0c;例如增值税等概念。 在本篇博客中&#xff0c;我们将覆盖这些知识点&a…

linux 指令 第3期

cat cat 指令&#xff1a; 首先我们知道一个文件内容属性 我们对文件操作就有两个方面&#xff1a;对文件内容和属性的操作 扩展&#xff1a;echo 指令 直接打印echo后面跟的字符串 看&#xff1a; 这其实是把它打印到了显示器上&#xff0c;我们也可以改变一下它的打印位置…

SpringCloud学习—Ribbon:负责均衡及Ribbon

ribbno是什么&#xff1f; Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说&#xff0c;Ribbon是Netflix发布的开源项目, 主要功能是提供客户端的软件负载均衡算法,将NetFlix的中间层服务连接在一起。 Ribbon的客户端组件提供一系列…

【UE4】局域网多人联机 Demo

效果 亲测可以打包后在两个电脑上联机运行&#xff08;前提是在同一个局域网内&#xff0c;互相能ping通&#xff09; 步骤 1. 首先新建一个第三人称角色模板工程 2. 在多玩家选项中&#xff0c;设置玩家数量为2 选择在新建编辑器窗口中运行 3. 新建一个父类为Character的蓝…

基于linux下的高并发服务器开发(第三章)- 3.12 生产者和消费者模型

/*生产者消费者模型&#xff08;粗略的版本&#xff09; */ #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>// 创建一个互斥量 pthread_mutex_t mutex;struct Node{int num;struct Node *next; };// 头结点 struct…

微信小程序授权登录时先判断是否勾选协议再弹出获取手机号的弹窗

思路&#xff1a;设置两个一样的按钮&#xff0c;一个用来判断是否已勾选&#xff1b;另一个是授权登录的按钮&#xff0c;用来获取用户信息 <button class"btn1" wx:if"{{ checked1}}" open-type"getPhoneNumber" bindgetphonenumber"g…

【每日一题】2050. 并行课程 III

【每日一题】2050. 并行课程 III 2050. 并行课程 III题目描述解题思路 2050. 并行课程 III 题目描述 给你一个整数 n &#xff0c;表示有 n 节课&#xff0c;课程编号从 1 到 n 。同时给你一个二维整数数组 relations &#xff0c;其中 relations[j] [prevCoursej, nextCour…

Jetson全系列平台升级命令合集

进入刷机模式: NVIDIA Jetson是通过Micro-USB/USB TYPE-C接口升级系统(具体参考不同载板说明),更新前需让Jetson进入Recovery 模式。Recovery 模式下可以进行文件系统更新包含: 内核Kernel,启动Bootloader,文件系统Filesystem等。 进入 Recovery 模式的步骤: 1)关闭系…

WEB APIs day4 (2)

三、M端事件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

数据安全:DataSecurity Plus

随着数字化时代的来临&#xff0c;数据成为了企业和个人生活中不可或缺的一部分。然而&#xff0c;数据的增长和广泛应用也带来了许多安全挑战。数据泄露、黑客攻击和恶意软件成为了威胁数据安全的主要因素。在这个充满风险的环境中&#xff0c;DataSecurity Plus作为一种强大的…