给定一个由 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. (上线时清缓存)laravel 5.1 的程序性能优化(配置文件) - 简书

    代码上到正式环境后执行这六步 php artisan config:clear php artisan config:cache php artisan route:clear php artisan ...

  2. CF431E Chemistry Experiment

    题意:有n个试管,有高度为hi的水银.操作1:将试管x中的水银高度改成y.操作2:将体积为v的水注入试管,求水位的高度?n,q<=1e5. 标程: #include<bits/stdc++ ...

  3. ERROR 1872

    解决 > start slave; ERROR (HY000): Slave failed to initialize relay log info structure from the rep ...

  4. Python: map和reduce

    可以先google一篇论文:MapReduce: SImplified Data Processing on Large Clusters 1. map map()函数接收2个参数:一个是函数,一个是 ...

  5. Unity 手机屏幕适配

    ////如有侵权 请联系我进行删除 email:YZFHKM@163.com 1.游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知 ...

  6. luogu P1332 血色先锋队[bfs]

    题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好 ...

  7. Delphi让所有的窗口的标题和图标显示在任务栏上

    Delphi:让所有的窗口的标题和图标显示在任务栏上在Delphi中,除了主窗口之外,当其它的窗口显示或切换到焦点时.默认情况下,窗口标题和图标并不会显示在任务栏中,为了实现像主窗口一样,每当窗口显示 ...

  8. JS继承(简单理解版)

    童鞋们,我们今天聊聊js的继承,关于继承,平时开发基本用不到,但是面试没有不考的,我就想问,这是人干的事吗? 好吧,迫于社会主义核心价值观,我们今天就来简单说一说js的继承,谁让它是面向对象编程很重要 ...

  9. 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

    这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...

  10. Docker系列(七):Docker图形化管理和监控

    Docker管理工具之官方三剑客 Docker Machine是什么鬼 从前 现在 你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其 能运行Docker容器. Docke ...