LeetCode949-给定数字能组成的最大时间
问题:
给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。
最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。
以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。
示例 1:
输入:[1,2,3,4]
输出:"23:41"
示例 2:
输入:[5,5,5,5]
输出:""
提示:
A.length == 40 <= A[i] <= 9
链接:https://leetcode-cn.com/contest/weekly-contest-113/problems/largest-time-for-given-digits/
分析:
1.将数字转换为字符串,然后进行全排列
2.从大到小,踢出不合规的,得到的第一个即为最大时间
3.合理时间小时不得大于23,分钟不得大于59
AC Code:
class Solution {
public:
string largestTimeFromDigits(vector<int>& A) {
string ret = "";
vector<string> all;
string str;
sort(A.begin(), A.end());
for (int i = ; i < A.size(); i++)
{
str += (char)(A[i] + '');
}
all = GetAll(str);
sort(all.begin(), all.end());
//all.erase(unique(all.begin(), all.end()), all.end());
for (int i = all.size()-; i >= ; i--)
{
ret = getValidTime(all[i]);
if (ret != "")
{
return ret;
}
}
return ret;
}
string getValidTime(string str)
{
string ret = "";
string hour = "";
hour+= (char)str[];
hour+=(char)str[];
string minute = "";
minute += (char)str[];
minute += (char)str[];
if (hour>"")
{
return ret;
}
if (minute > "")
{
return ret;
}
return hour + ":" + minute;
return ret;
}
vector<string> GetAll(string str)
{
vector<string> ret;
ret.emplace_back(str);
while (next_permutation(str.begin(), str.end()))
{
ret.emplace_back(str);
}
return ret;
}
};
其他:
1.next_permutation 可以获得字符串的下一个全排列,所有需要先排序得到最小的一个,然后继续得到下一个
2.过程中试图逐个判断数字,比如看有没有2,如果有的话看剩下的里面有没有0-3这种方式,浪费一个多小时,涉及到回溯等,不过过程中也暴露出一些掌握的不扎实的基础知识点
2.1 查看vector X中是否有元素x: X.count(X.begin(),X.end(),x),统计该元素的个数,如果0则表示不存在
2.2 删除指定位置的元素:X.erase(X.begin()+index)
3,最开始的直接想法是尝试,过程中发现全排列更好,不过都已经花费了很长时间了,想着实现了再说,结果陷到坑里出不来了,第一个简单题解决用了一个小时,改用全排列后也不过十来分钟。这就是所谓的沉没成本吗?需要尽量克服这种心理。
4.第一code:
class Solution {
public:
string largestTimeFromDigits(vector<int>& A) {
sort(A.begin(), A.end());
string answer = "";
for (int t = ; t < ; t++) {
if (t % >= )
continue;
vector<int> digits;
int t_copy = t;
for (int i = ; i < ; i++) {
digits.push_back(t_copy % );
t_copy /= ;
}
sort(digits.begin(), digits.end());
if (A == digits) {
char str[];
sprintf(str, "%02d:%02d", t / , t % );
answer = str;
}
}
return answer;
}
};
LeetCode949-给定数字能组成的最大时间的更多相关文章
- [Swift]LeetCode949. 给定数字能组成的最大时间 | Largest Time for Given Digits
Given an array of 4 digits, return the largest 24 hour time that can be made. The smallest 24 hour t ...
- Leetcode 949. 给定数字能组成的最大时间
949. 给定数字能组成的最大时间 显示英文描述 我的提交返回竞赛 用户通过次数125 用户尝试次数213 通过次数127 提交次数774 题目难度Easy 给定一个由 4 位数字组成的数组,返 ...
- Leetcode949. Largest Time for Given Digits给定数字能组成最大的时间
给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间. 最小的 24 小时制时间是 00:00,而最大的是 23:59.从 00:00 (午夜)开始算起,过得越久,时间越大. ...
- mysql学习1:数据类型:数字型,日期和时间,字符串类型(总结)
mysql数据类型:数字型,日期和时间,字符串类型 摘要 MySQL中定义数据字段的类型对数据库的优化是非常重要的: MySQL支持多种类型,大致可以分为三类,如下. 数字类型 整数:tinyint. ...
- LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)
题目链接: https://leetcode.com/problems/search-for-a-range/?tab=Description Problem: 在已知递减排序的数组中,查找到给定 ...
- linux time-统计给定命令所花费的总时间
推荐:更多linux 性能监测与优化 关注:linux命令大全 time命令用于统计给定命令所花费的总时间. 语法 time(参数) 参数 指令:指定需要运行的额指令及其参数. 实例 当测试一个程序或 ...
- Mysql数据库里面的String类型依照数字来排序以及按时间排序的sql语句
今天做项目的时候,遇到个小小的问题,在数据库中查询的时候,要用String类型的ID进行一下排序!(注:ID字段为 varchar 类型) 解决的方法: 如: SELECT * FROM Stude ...
- April Fools Contest 2017 题解&源码(A,数学 B,数学 C,数学 D,字符串 E,数字逻辑 F,排序,卡时间,G,数学)
A. Numbers Joke time limit per test:2 seconds memory limit per test:64 megabytes input:standard inpu ...
- 利用linq快速判断给定数字是否包含在某个段范围内
一.需求: 知道某段范围0x0020~0x007F0x00A0~0x017F0x01A0~0x01CF0x01F0~0x01FF0x0210~0x021F0x1EA0~0x1EFF给定一个值,快速判断 ...
随机推荐
- 记一次内存溢出java.lang.OutOfMemoryError: unable to create new native thread
一.问题: 春节将至,系统访问量进入高峰期.随之系统出现了异常:java.lang.OutOfMemoryError: unable to create new native thread.在解决这个 ...
- vulhub-php/php_inclusion_getshell
注:本地测试php文件包含+phpinfo泄露导致getshell,此漏洞与php版本无关 使用vulhub环境进行复现: 项目地址:https://github.com/vulhub/vulhub/ ...
- C#中动态创建数据库和数据表,很经典【转】
用ADOX创建access数据库方法很简单,只需要new一个Catalog对象,然后调用它的Create方法就可以了,如下: ADOX.Catalog catalog = new Catalog(); ...
- Dos窗口一闪而过,如何查看错误?
问:Dos窗口一闪而过,如何查看错误? 答:在执行程序最后追加pause或者read(,),即可查看错误信息.
- Java hibernate 遇到的问题:could not read a hi value
问题: 解决办法:在网上看到一篇文章说是把数据库实体类的注解@GeneratedValue改成@GeneratedValue(strategy = GenerationType.IDENTITY) , ...
- 内容显示分页数字分页 aspx
此处是aspx里面分页显示,数据层和业务层是由动软生成 当然,我们也可以可以利用listView实现分页ListView(高效分页) public partial class NewList : Sy ...
- Spring MVC中注解的简介
参考网址: https://blog.csdn.net/a67474506/article/details/46361195 @RequestMapping映射请求 SpringMVC 使用 @Re ...
- Mac下对PhpStorm主题的添加
大家都知道,作为一个PHPer,PhpStorm是圈内评价较高的一款IDE. 所以,为了有一个更加个性化的coding界面,我们有很多的主题可以使用. phpStorm自带了好几个主题,你可以通过以下 ...
- 关于dependencies和devDependencies的理解
npm install 会下载dependencies和devDependencies中的模块,当使用npm install --production或者注明NODE_ENV变量值为productio ...
- IOS UISwitch控件的基本使用
* UISwitch继承自UIControl,因此也能像UIButton一样监听一些事件,比如状态改变事件* UISwitch可以通过拖线监听状态改变* UISwitch可以通过addTarget:. ...