假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(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]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
因为考虑到身高大于等于h的,要在前方有k个,那么换句话说
当考虑一个身高为h的人,不用考虑身高小于h的所有人
维护答案队列,使得插入身高为h的人时,队列里面的身高都大于等于h(高的先插入)
因为队列里的都高,所以可以把k
作为队列的插入下标,保证正确性
注意
除了插入顺序是从高到矮,还要保证同一身高,k小的先插入,因为同一身高,k小的会在k大的前面,比如 a=[7, 2],b=[7,1]
,先插入a的话,因为b必定在a前面,那么a的下标其实是不对的,