博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 406. Queue Reconstruction by Height Java
阅读量:4566 次
发布时间:2019-06-08

本文共 1208 字,大约阅读时间需要 4 分钟。

题目:

Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of this person who have a height greater than or equal to h. Write an algorithm to reconstruct the queue.

Note:

The number of people is less than 1,100.

Example

Input:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]Output:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

 题意及分析:给出了一些人的身高和这个人前面身高大于等于他的人数,对这些人进行排队,使得所有人的情况都得到满足。这道题的思路是(贪心算法):

  (1)首先找到身高最高的人并对他们进行排序。

  (2)然后找到身高次高的人,按照他们的前面的人数把他们插入到最高的人群中。

因此这是一个排序和插入的过程,按照身高进行降序排序,然后把身高相同的人按照k进行升序排序。每次取出身高相同的一组人,按照k值把他们插入到队列中。

代码:

public class Solution {    public int[][] reconstructQueue(int[][] people) {        Arrays.sort(people, new Comparator
() { //按身高降序排序(h大的在前面),按k的大小升序排列(k小的在前面) public int compare(int[] a, int[] b) { if(a[0] != b[0]) return -a[0]+b[0]; else return a[1]-b[1]; } }); List
res=new LinkedList<>(); //保存结果 for(int i=0;i

 

  

 

 

 

 


 
Seen this question in a real interview before

 

转载于:https://www.cnblogs.com/271934Liao/p/7084019.html

你可能感兴趣的文章
django认证01---token
查看>>
js 默认行为取消
查看>>
HDU2444(KB10-B 二分图判定+最大匹配)
查看>>
JScrollPane中添加JPanel不出现滚动条
查看>>
2017-11-09 中英文代码对比系列之Java一例
查看>>
iOS UIWebView中图片显示尺寸不正常或者需要调整
查看>>
java多线程1-生产者与消费者
查看>>
C# 字符串处理函數大全
查看>>
老师上课总是不给PPT?于是我用几行python代码偷偷复制U盘文件
查看>>
HDU 1022 ( Train Problem I )
查看>>
node.js&pm2搭建node生产环境
查看>>
tornado write render redirect IP
查看>>
WebGL笔记(目录)
查看>>
JavaScript中的单体模式四种实现方式
查看>>
帮程序员减压放松的10个良心网站
查看>>
工作压力山大?码农这么减压最有效
查看>>
python学习手册笔记——13.while和for循环
查看>>
4 pandas模块,Series类
查看>>
sql server 的datediff函数
查看>>
mongoDB创建windows服务启动解决
查看>>