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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 674评论 0 0
  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 2,198评论 0 3
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,392评论 0 2
  • 他是一个痴情的人,而且喜欢用优雅的方式表达他的内心所想所思。 那一年,他看到了朋友在结婚的典礼上用吉他弹奏一首《月...
    月斜阅读 532评论 8 6
  • 今天很累,从早上到下午,用了一整天的时间编写了三个cctalk学习指南,分别是:《四月份大作业完成办法》、《小打卡...
    陕县2985高海民阅读 319评论 4 5