标签:lang 切片 情况 color cti 移动 商业 影响 题目
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
func reconstructQueue(people [][]int) [][]int { // 特殊情况 if len(people) == 0 || len(people) == 1 { return people } // 按照身高降序排序,身高相同,则按k升序排序 sort.Slice(people, func(i, j int) bool { if people[i][0] == people[j][0] { return people[i][1] < people[j][1] } return people[i][0] > people[j][0] }) ans := make([][]int, len(people)) for i := 0; i < len(people); i++ { ans[i] = make([]int, 2) } // 从people[1]开始插入到k位置,如果该位置已经有元素,则该位置到i-1都后移一位,再插入 ans[0] = people[0] for i := 1; i < len(people); i++ { t := people[i][1] for j := i; j > t; j-- { ans[j] = ans[j-1] } ans[t] = people[i] } return ans }
时间复杂度:O(N2)
空间复杂度:O(N)
[LeetCode-Golang] 406. 根据身高重建队列
标签:lang 切片 情况 color cti 移动 商业 影响 题目
原文地址:https://www.cnblogs.com/nini-skyrim/p/12657170.html