LeetCode 949 给定数字能组成的最大时间

给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。

最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。

以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。

直接暴力方法。

from typing import *
import itertools


class Solution:
    def largestTimeFromDigits(self, arr: List[int]) -> str:
        ans = -1
        i1, j1, k1, l1 = -1, -1, -1, -1
        # 返回arr中元素的所有排列
        for i, j, k, l in itertools.permutations(arr):
            h = 10 * i + j
            m = 10 * k + l
            if 0 <= h <= 23 and 0 <= m <= 59:
                if 60 * h + m > ans:
                    i1, j1, k1, l1 = i, j, k, l
                    ans = 60 * h + m
        if ans == -1:
            return ''
        return '{}{}:{}{}'.format(i1, j1, k1, l1)


if __name__ == '__main__':
    sol = Solution()
    arr = [1, 2, 3, 4]
    print(set(itertools.permutations(arr)))
    print(sol.largestTimeFromDigits(arr))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值