本文以python为编程语言,题目来源于力扣312届周赛
题目:
给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。
对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。
请按身高 降序 顺序返回对应的名字数组 names 。
案例一:
输入:names = ["Mary","John","Emma"], heights = [180,165,170]
输出:["Mary","Emma","John"]
解释:Mary 最高,接着是 Emma 和 John 。
案例二:
输入:names = ["Alice","Bob","Bob"], heights = [155,185,150]
输出:["Bob","Alice","Bob"]
解释:第一个 Bob 最高,然后是 Alice 和第二个 Bob 。
遇到的问题:思路很清晰,但是代码水平不足,忘记zip整合列表
思路:比较高度然后通过高度进行排序
代码实现:
class Solution:
def sortPeople(self, names: List[str], heights: List[int]) -> List[str]:
tmp = list(zip(names, heights)) #运用zip函数将俩个列表整合在一起,注意zip返回的不是列表
tmp.sort(key=lambda x:-x[1]) #排序
return [x[0] for x in tmp]
总结:函数运用不够熟练