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给定一个值,快速判断 ...
随机推荐
- 【手撸一个ORM】第十步、数据操作工具类 MyDb
说明 其实就是数据库操作的一些封装,很久不用SqlCommand操作数据库了,看了点园子里的文章就直接上手写了,功能上没问题,但写法上是否完美高效无法保证,建议有需要的朋友自己重写,当然如果能把最佳实 ...
- Storm概念学习系列之storm的功能和三大应用
不多说,直接上干货! storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extract ...
- 【Linux】linux压缩和解压缩命令大全
tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...
- CheatEngine-内存修改
0.备注+待完成 //备注 a). 如果有方括号,就是说CE认为找 到了数值的指针了 //待完成 a). 自动导出外挂 b). 菜单栏中"表单"下的lua是做什么用的 c). CE ...
- Device
#import "AppDelegate.h" #import "RootViewController.h" @implementation AppDelega ...
- hibernate课程 初探单表映射2-5 session详解(上)
1 本章目的:获得session的两种方式: openSession 和 getCurrentSession 2 两种session的使用方法 1openSession可以直接写,getCurrent ...
- css最佳实践(reset.css)
html, body, div, span, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,abbr, address, cite ...
- php 05
流程控制 一.流程控制 1.顺序结构 //自上而下 从左到右 2.条件分支结构 a. 单向分支结构 if() 只能管理一条指令 这条指令是和他紧跟着的指令 if(){} 只能管理整个花括号里面的代码 ...
- 返回mapcontrol上的已被选择的element
IGraphicsContainerSelect.SelectedElement
- pta 编程题14 Huffman Codes
其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...