LeetCode&Python 846. 多关键字排序

描述

给定 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 

你可能感兴趣的:(LeetCode&Python 846. 多关键字排序)