描述
给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。
Example
样例1
输入: array = [[2,50],[1,50],[3,100]]
输出: [[3,100],[1,50],[2,50]]
样例2
输入: array = [[2,50],[1,50],[3,50]]
输出: [[1,50],[2,50],[3,50]]
Python:
class Solution:
def multiSort(self, array):
for i in range(len(array)-1):
for j in range(len(array)-1-i):
if array[j][1] < array[j+1][1]:
array[j], array[j+1] = array[j+1], array[j]
elif array[j][1] == array[j+1][1]:
if array[j][0] > array[j+1][0]:
array[j], array[j+1] = array[j+1], array[j]
return array
这个问题是EASY级别的,思路就是先按第二列冒泡排序,若遇到相同的再比较第一列。
Python里还有个偷懒的方法,一行搞定,那就是用lambda函数啦~
class Solution:
def multiSort(self, array):
a = sorted(array,key=lambda x: (-x[1],x[0]))
return a