给定一个由 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

题目有很多格式没有说明清楚的地方。

类似DFS的循环做法。遍历,注意好判断条件

最初无修改,击败14%

bool cmp(int x, int y)
{
return x > y;
} class Solution {
public:
string largestTimeFromDigits(vector<int>& A)
{
sort(A.begin(), A.end(), cmp);
bool visit[4];
memset(visit, 0, sizeof(visit));
int MIN = 0;
int MAX = 1439;
int res = 0;
int flag = false;
for (int i = 0; i < 4; i++)
{
visit[i] = true;
for (int j = 0; j < 4; j++)
{
if (visit[j] == true)
continue;
visit[j] = true;
for (int k = 0; k < 4; k++)
{
if (visit[k] == true)
continue;
visit[k] = true;
for (int l = 0; l < 4; l++)
{
if (visit[l] == true)
continue;
//注意
if(A[i] > 2 || A[k] > 5)
continue;
int temp = (A[i] * 10 + A[j]) * 60 + (A[k] * 10 + A[l]);
if (temp < MIN || temp > MAX)
continue;
flag = true;
res = max(res, temp);
}
visit[k] = false;
}
visit[j] = false;
}
visit[i] = false;
}
if (!flag)
return "";
if (res == 0)
return "00:00";
string str = "";
if (res / 60 < 10)
{
str += "0" + to_string(res / 60) + ":";
}
else
{
str += to_string(res / 60) + ":";
} if (res % 60 < 10)
{
str = str + "0" + to_string(res % 60);
}
else
{
str += to_string(res % 60);
}
return str;
}
};

因为从大到小排过序,所以第一次能够组成的一定是最大的。

修改一下,击败100%

bool cmp(int x, int y)
{
return x > y;
} class Solution {
public:
string largestTimeFromDigits(vector<int>& A)
{
sort(A.begin(), A.end(), cmp);
bool visit[4];
memset(visit, 0, sizeof(visit));
int MIN = 0;
int MAX = 1439;
int res = 0;
for (int i = 0; i < 4; i++)
{
visit[i] = true;
for (int j = 0; j < 4; j++)
{
if (visit[j] == true)
continue;
visit[j] = true;
for (int k = 0; k < 4; k++)
{
if (visit[k] == true)
continue;
visit[k] = true;
for (int l = 0; l < 4; l++)
{
if (visit[l] == true)
continue;
//注意
if(A[i] > 2 || A[k] > 5)
continue;
int temp = (A[i] * 10 + A[j]) * 60 + (A[k] * 10 + A[l]);
if (temp < MIN || temp > MAX)
continue;
res = max(res, temp);
if (res == 0)
return "00:00";
string str = "";
if (res / 60 < 10)
{
str += "0" + to_string(res / 60) + ":";
}
else
{
str += to_string(res / 60) + ":";
} if (res % 60 < 10)
{
str = str + "0" + to_string(res % 60);
}
else
{
str += to_string(res % 60);
}
return str;
}
visit[k] = false;
}
visit[j] = false;
}
visit[i] = false;
}
return "";
}
};

Leetcode949. Largest Time for Given Digits给定数字能组成最大的时间的更多相关文章

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

    949. 给定数字能组成的最大时间  显示英文描述 我的提交返回竞赛   用户通过次数125 用户尝试次数213 通过次数127 提交次数774 题目难度Easy 给定一个由 4 位数字组成的数组,返 ...

  2. [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 ...

  3. LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)

    题目链接: https://leetcode.com/problems/search-for-a-range/?tab=Description   Problem: 在已知递减排序的数组中,查找到给定 ...

  4. 【Leetcode_easy】949. Largest Time for Given Digits

    problem 949. Largest Time for Given Digits solution: class Solution { public: string largestTimeFrom ...

  5. mysql学习1:数据类型:数字型,日期和时间,字符串类型(总结)

    mysql数据类型:数字型,日期和时间,字符串类型 摘要 MySQL中定义数据字段的类型对数据库的优化是非常重要的: MySQL支持多种类型,大致可以分为三类,如下. 数字类型 整数:tinyint. ...

  6. linux time-统计给定命令所花费的总时间

    推荐:更多linux 性能监测与优化 关注:linux命令大全 time命令用于统计给定命令所花费的总时间. 语法 time(参数) 参数 指令:指定需要运行的额指令及其参数. 实例 当测试一个程序或 ...

  7. LeetCode.949-给定数字的最大时间(Largest Time for Given Digits)

    这是悦乐书的第363次更新,第391篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第225题(顺位题号是949).给定4个整数组成的数组,返回最大的24小时时间. 最小的 ...

  8. 113th LeetCode Weekly Contest 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 ...

  9. LeetCode 258 Add Digits(数字相加,数字根)

    翻译 给定一个非负整型数字,反复相加其全部的数字直到最后的结果仅仅有一位数. 比如: 给定sum = 38,这个过程就像是:3 + 8 = 11.1 + 1 = 2.由于2仅仅有一位数.所以返回它. ...

随机推荐

  1. npm run server报错

    从git上clone的vue项目npm install后npm run server报错 $ npm run dev > lufei@1.0.0 dev E:\pythonProject\luf ...

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"

    报错: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected estab ...

  3. pycharm同时使用python2.7和python3.5设置方法

    pycharm同时使用python2.7和python3.5设置方法 - CSDN博客https://blog.csdn.net/qwerty200696/article/details/530159 ...

  4. MDK 添加芯片支持 以STM32F103ZE为例

    问题说明: 新建mdk工程时第一步是选芯片(以STM32F103ZE为例),但是芯片没有的话需要自己手动添加,如图: 解决方法: 下载KEIL MDK5以后是没有安装device的,如果此时创建工程会 ...

  5. angluar1.8.2 PC Mail项目笔记

    兼容性技术选型 前后端分离 代理gulp nginx jq+angluar1.8.2 使用级别刚刚好的相对目录,方便转移项目或者做接口代理时的切换目录 指令过滤器服务控制器书写位置 方法封装,自己写和 ...

  6. spring mvc文件上传报错:Expected MultipartHttpServletRequest: is a MultipartResolver configured?

    报错原因:spring-mvc.xml 的配置文件中,配置文件上传id不为 “multipartResolver” 解决:id 改为 “multipartResolver”

  7. Team Train Recorder 2.0

    Bubble Cup 12 - Finals Online Mirror, unrated, Div. 1 2019/10/4, solved 4/9, upsolved

  8. Amazon AWS

  9. Python全栈开发:web框架之tornado

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  10. Linux时间和时区设定

    一.时区设定 由于安装系统时采用了UTC,那么什么是UTC呢,简单的说UTC就是0时区的时间,是国际标准,而中国处于UTC+8时区. 使用tzselect命令,过程如下: 可以看到此环境变量已设置,将 ...