2020-11-16:手写代码:leetcode第406题。假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
福哥答案2020-11-16:
①排序。按照【身高】降序排列。如果【身高】一样,按照【人数】升序排列。
②插入。遍历这个队列,按照【人数】插入相应位置。
采用leetcode里的代码,golang代码如下:
func reconstructQueue(people [][]int) (ans [][]int) { sort.Slice(people, func(i, j int) bool { a, b := people[i], people[j] return a[0] > b[0] || a[0] == b[0] && a[1] < b[1] }) for _, person := range people { idx := person[1] ans = append(ans[:idx], append([][]int{person}, ans[idx:]...)...) } return }
执行结果如下: