题目:
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
注意:
总人数少于1100人。
示例
输入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
输出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
不会做的时候,先看看答案,对着答案画个图,也可以懂
代码
class Solution {
public int[][] reconstructQueue(int[][] people) {
Arrays.sort(people, new Comparator<int[]>(){
@Override
public int compare(int[] t1,int[] t2) {
if (t1[0] != t2[0]){
return t2[0] - t1[0];
} else {
return t1[1] - t2[1];
}
}
});
List<int[]> res = new ArrayList<int[]>();
for (int[] person:people){
res.add(person[1],person);
}
return res.toArray(new int[res.size()][]);
}
}

这篇博客讨论了一种算法问题,涉及到重建一个基于身高和前置条件的队列。给定每个人的身高h和在其前面身高大于或等于h的人数k,通过排序和贪心策略可以重构队列。博客提供了示例输入和输出,并展示了一个Java实现的解决方案,该方案首先根据身高和前置条件对人进行排序,然后将他们按顺序插入到结果列表中。
329

被折叠的 条评论
为什么被折叠?



