949. Largest Time for Given Digits

2023-12-21 16:32
文章标签 time given digits largest 949

本文主要是介绍949. Largest Time for Given Digits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

 

示例 1:

输入:[1,2,3,4]
输出:"23:41"

示例 2:

输入:[5,5,5,5]
输出:""

 

提示:

  1. A.length == 4
  2. 0 <= A[i] <= 9

解法一

//时间复杂度O(1), 空间复杂度O(1)
class Solution {
public:bool match(int hour, int minute, vector<int>& A) {vector<int> B = {hour / 10, hour % 10, minute / 10, minute % 10};sort(B.begin(), B.end());return B == A;}string largestTimeFromDigits(vector<int>& A) {sort(A.begin(), A.end());int hour = 23, minute = 59;while(hour >= 0) {if(match(hour, minute, A))return to_string(hour / 10) + to_string(hour % 10) + ':' +to_string(minute / 10) + to_string(minute % 10);if(minute-- < 0) {minute = 59;hour--;}}return "";}
};

解法二

//时间复杂度O(1), 空间复杂度O(1)
class Solution {
public:bool check(vector<int>& A) {if(A[0] > 2 ||A[0] == 2 && A[1] > 3 ||A[2] > 5) return false;return true;}string largestTimeFromDigits(vector<int>& A) {int hour = -1, minute = -1;sort(A.begin(), A.end());do {if(!check(A)) continue;int hour1 = A[0] * 10 + A[1];int minute1 = A[2] * 10 + A[3];if(hour < hour1 || hour == hour1 && minute < minute1) {hour = hour1;minute = minute1;}} while(next_permutation(A.begin(), A.end()));return hour == -1 ? "" : to_string(hour / 10) + to_string(hour % 10) + ':' +to_string(minute / 10) + to_string(minute % 10);}
};

思路:

解法一(略低效)

穷举法,对所有合法的时间进行遍历,尝试匹配给定数组A。从23:59开始向下遍历,直到找到第一个与A包含元素一样的时间,若到00:00没有找到,就返回空串。

解法二

不对所有时间遍历,而是对给定数组A求全排列,对于每一个排列,先check其合法性,若合法且时间大于hour:minute,就更新hour:minute,最后返回hour:minute的字符串形式。

这里全排列使用了标准库的next_permutation(),也可以自已实现全排列算法,代码稍长,待日后整理一下。

2019/08/18 00:42

这篇关于949. Largest Time for Given Digits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520711

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

ural 1014. Product of Digits贪心

1014. Product of Digits Time limit: 1.0 second Memory limit: 64 MB Your task is to find the minimal positive integer number  Q so that the product of digits of  Q is exactly equal to  N. Inpu

linux 下Time_wait过多问题解决

转自:http://blog.csdn.net/jaylong35/article/details/6605077 问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。 现象: 1、外部机器不能正常连接SSH 2、内向外不能够正常的ping通过,域名也不能正常解析。

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

lua data time

local getTime = os.date(“%c”); 其中的%c可以是以下的一种:(注意大小写) %a abbreviated weekday name (e.g., Wed) %A full weekday name (e.g., Wednesday) %b abbreviated month name (e.g., Sep) %B full month name (e.g., Sep

Event Time源码分析

《2021年最新版大数据面试题全面开启更新》 flink 中Processing Time也就是处理时间在watermark定时生成、ProcessFunction中定时器与时间类型的窗口中都有使用,但是其内部是如何实现注册定时器、如何调用、如何容错保证在任务挂掉在下次重启仍然能够触发任务执行,都是我们今天的主题。首先需要了解一下在flink内部时间系统是由哪些类来共同完成这件事,下面画

大数据-121 - Flink Time Watermark 详解 附带示例详解

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis (已更完)Kafka(已更完)Spark(已更完)Flink(正在更新!) 章节内容 上节我们完成了如下的内容: 滑动窗口:时间驱动、事件