码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode数组相对排序


    剑指 Offer II 075. 数组相对排序

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

    来源:LeetCode

    arr1里面的元素是可以重复的,并且要按照arr2里面的元素进行排序,就要以arr2里面的元素做基准,看看arr1里面的元素有多少与其重合。
    首先,遍历arr1,将其元素的个数记录下来,记为数组time【】。
    遍历arr2,arr2中的元素一定在arr1中出现,就是个数问题,利用time【】数组,将与arr2中元素相等的arr1中的元素加入res数组。
    之后剩下的就是没有在arr2中出现的元素,题目要求按升序排列,那就从0到max遍历,可以保证升序放入res数组中,当遇到time【】对应的元素不是0时,也就是还没有被放进去的元素的时候,加入到res末尾即可。

    class Solution {
        public int[] relativeSortArray(int[] arr1, int[] arr2) {
            int max=0;
            for(int i:arr1){
                max=Math.max(max,i);
            }
            int[] time = new int[max+1];
            for(int i:arr1){
                time[i]++;
            }
            int[] res = new int[arr1.length];
            int k=0;
            for(int i:arr2){
                for(int j=0;j<time[i];j++){
                    res[k++]=i;
                }
                time[i]=0;
            }
            for(int i=0;i<=max;i++){
                for(int j=0;j<time[i];j++){
                    res[k++]=i;
                }
            }
            return res;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    本题刚开始写的时候没有考虑到升序排列未出现的元素,而且需要记录哪些元素以及被加入到数组里面了,所以需要开辟一个数组来存放元素个数。

  • 相关阅读:
    【Alibaba中间件技术系列】「RocketMQ技术专题」RocketMQ消息发送的全部流程和落盘原理分析
    【ACL2023】Event Extraction as Question Generation and Answering
    antd-design-vue Table组件全局配置(分页器...)
    计算机毕业设计选题推荐-在线考试系统-Java项目实战
    5-2 Pytorch中的模型层layers
    笔记(上):mysql-DuplicateUpdate和java的threadpool的“死锁“
    CSS 之 posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果
    (七)admin-boot项目之全局处理字符串两边空格
    window系统 bat脚本开启和关闭防火墙
    vue vue3开发 vue2和vue3的选择
  • 原文地址:https://blog.csdn.net/liyatjj/article/details/126864073
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号