python按身高体重排队_LeetCode-python 406.根据身高重建队列
題目鏈接
難度:中等 ??????類型: 數(shù)組
假設(shè)有打亂順序的一群人站成一個(gè)隊(duì)列。 每個(gè)人由一個(gè)整數(shù)對(duì)(h, k)表示,其中h是這個(gè)人的身高,k是排在這個(gè)人前面且身高大于或等于h的人數(shù)。 編寫一個(gè)算法來(lái)重建這個(gè)隊(duì)列。
注意:
總?cè)藬?shù)少于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]]
解題思路
1.排序:按照身高從高到低排,升高相同的按k從小到大排
2.插入:按照排序好的順序逐個(gè)插入新數(shù)組,插入的位置按照k來(lái)插
如示例中,排序完:
[[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]
插入的過(guò)程:
第一插:[[7,0]]
第二插:[[7,0], [7,1]]
第三插:[[7,0], [6,1],[7,1]]
第四插:[[5,0],[7,0], [6,1],[7,1]]
...
先插高的,后插矮的,即使后插的插到前面也不會(huì)有影像,因?yàn)榘?/p>
代碼實(shí)現(xiàn)
class Solution(object):
def reconstructQueue(self, people):
"""
:type people: List[List[int]]
:rtype: List[List[int]]
"""
people.sort(key=lambda (h, k): (-h, k))
res = []
for p in people:
res.insert(p[1],p)
return res
總結(jié)
以上是生活随笔為你收集整理的python按身高体重排队_LeetCode-python 406.根据身高重建队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 星星排序python_python中怎么
- 下一篇: python中的常量是什么意思_第14p