当前位置: 首页 > article >正文

贪心算法---根据身高重建队列

题目:

假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好ki 个身高大于或等于 hi 的人。

请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

思路:

先考虑身高,再考虑人数。将数组按照身高降序排列,身高相同的按照人数升序排列。将排好序的people数组元素一个一个插入到队列中,ki就是该元素的下标。

代码:

    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people,(a,b)->{
            if(a[0]==b[0]) return a[1]-b[1];//如果身高相等,按照k升序排列
            return b[0]-a[0];//按照身高降序排列
        });
        LinkedList<int[]> que=new LinkedList<>();
        for(int[] p:people){
            que.add(p[1],p);//将p插入到下标为p[1]的位置上
        }
        return que.toArray(new int[people.length][]);
    }


http://www.kler.cn/a/284545.html

相关文章:

  • C++中的std::tuple和std::pair
  • Elasticsearch基本概念及使用
  • PHP多门店医疗服务系统小程序源码
  • LeetCode【0033】搜索旋转排序数组
  • Spring Boot 2.x 和 Druid 多数据源整合 dm
  • 什么时候需要复写hashcode()和compartTo方法
  • 什么是 One-Hot 编码?
  • 音视频——RTSP流媒体传输技术介绍及抓包解析
  • 【C++从练气到飞升】17---set和map
  • Vue知识大全【查漏补缺】
  • 【书生3.6】MindSearch 快速部署
  • 深入解析多商户商城系统源码:如何开发直播商城小程序?
  • 知识产权案件中的消费者问卷调查证据
  • windows下载安装Node.js 并切换镜像地址
  • 数据结构与算法 第5天(树和二叉树)
  • 使用 OpenCV 组合和缩放多张图像
  • 【C++】避开 C 语言的格式化输出陷阱:掌握 printf、sprintf、snprintf、fprintf、vsprintf
  • 使用 pnpm workspace 和 standalone 模式构建 Next.js 的 Docker 镜像
  • ceph rgw reshard (by quqi99)
  • Ubuntu 24.04 中安装网易邮箱大师
  • JVM下篇:性能监控与调优篇-02-JVM监控及诊断工具-命令行篇
  • mybatisplus + oracle + spring boot遇到的一些问题
  • python基础学习(最终篇)
  • Unclutter - 苹果电脑(Mac)桌面文件笔记剪贴板管理工具
  • jenkins如何生成报告并查看报告,如何安装allure插件
  • MySQL-基础篇-事务(事务简介、事务操作、事务的四大特性、并发事务引发的问题、事务的隔离级别)