算法题-竞赛技巧(.sort()方法,布尔值)

链接:登录—专业IT笔试面试备考平台_牛客网

来源:牛客网

题目描述

在ACM竞赛中,当遇到有两个队伍(人) 解出相同的题目数量的时候,我们需要通过他们解决问题的总时间进行排序。

一共有 N(1<=N<=5,000)条时间被以时(0<=Hours<=99), 分(0<=Minutes<=59),秒(0<=Seconds<=59)的形式记录。

你必须要把他们按时,分,秒排序为 升序,最少的时间最先。 考虑到如下的样例,这三个解出相同题目数量的时间为

11:20:20

11:15:12

14:20:14

正确的排序结果应该是这样的:

11:15:12

11:20:20

14:20:14

输入描述:

第 1 行,一个整数 N 第 2~n+1 行,每行 3 个整数,表示时,分,秒

输出描述:

共 n 行,每行 3 个整数,表示排序完后的结果

示例

输入

3

11 20 20

11 15 12

14 20 14

输出

11 15 12

11 20 20

14 20 14

说明

所以在保证能做对的情况下,我们应当尽量减少罚时

解题思路:

将 时分秒制时间 全部转换为 秒制时间 ,进行排序,再转换为 时分秒制时间 。

N=int(input())
T=[]
for m in range(N):
    Tm=list(map(int,input().split()))
    T+=Tm

def fingding(T,N):
    sum_time=[]
    for n in range(1,N+1):
        tn=T[3*n-3]*3600+T[3*n-2]*60+T[3*n-1]
        sum_time.append(tn)
    sum_time.sort()
    last_time=[]
    for i in sum_time:
        hour=i//3600
        minute=(i-3600*hour)//60
        second=i-3600*hour-60*minute
        last_time.append(hour)
        last_time.append(minute)
        last_time.append(second)
    return last_time
result=finding(T,N)

K=int(len(result)/3)
for k in range(1,K+1):
    print(f"{result[3*k-3]} {result[3*k-2]} {result[3*k-1]}")

.sort()方法

在python中,.sort()是对于列表进行排序的方法。它的基本语法是:

list.sort(key=None,reverse=False)
  • key参数是一个可选的参数,用于指定一个用于排序的关键字。默认情况下,是按照元素本身的大小进行排序。
  • reverse(翻译:逆转)参数是一个可选的布尔值,如果设置为True,则列表按降序排列,默认为False,即升序排列。

例如:

numbers=[4,2,7,1,9]
numbers.sort()    #默认升序排列
print(numbers)    #输出:[1,2,4,7,9]

numbers.sort(reverse=True)    #降序排序
print(numbers)    输出:[9,7,4,2,1]

需注意,.sort()方法是就地排序,它直接修改原始列表,而不是返回一个新的排序后的列表。

布尔值

布尔值是计算机科学中的一种基本数据类型,用于表示真(True)或假(False)的逻辑值。在python中,布尔值是bool类型,它只有两个可能的取值:True和False

布尔值通常用于条件判断,控制程序的流程。例如:

is_raining = True

if is_raning:
    print("Bring an umbrella")
else:
    print("Enjoy the weather")

在这个例子中,is_raining是一个布尔变量,根据它的值,程序会执行不同的代码块。

布尔值也经常与比较运算符(<、>、==等)一起使用,用于比较两个值的关系,并返回布尔结果。例如:

x = 5
y = 10

is_greater = x>y
print(is_greater)    #输出:False

参数key

在python的.sort()方法中,key参数是一个可选的参数,用于指定一个函数,该函数将被用于从每个列表中提取一个用于排序的关键字。默认情况下使用元素自身的值进行排序。

words=['apple','banana','orange','kiwi']
words.sort()
print(words)
#输出:['apple','banana','kiwi','orange']

key指定的函数是一个自定义的函数,允许按照特定规则对列表进行排序。例如,按照字符串的长度进行排序:

words=['apple','banana','orange','kiwi']
words.sort(key=len)    #按字符串长度排序
print(words)    #输出:['kiwi','apple','banana','orange']

在这个例子中,key=len指定了排序时所用的关键字是字符串的长度。

元素自身的值

元素的值比较取决于元素的类型。不同类型的元素有不同的比较规则:

  • 对于数字(整数、浮点数等):元素的值是根据数字的大小进行比较。例如,4小于7
  • 对于字符串:元素的值是根据字符串的字典序(Unicode码点顺序)进行比较。例如,'apple'在字典序上小于'banana'

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值