zoukankan      html  css  js  c++  java
  • leetcode 401 二进制手表

    二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。

    每个 LED 代表一个 0 或 1,最低位在右侧。

     

    例如,上面的二进制手表读取 “3:25”。

    给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。

    示例:

    输入: n = 1
    返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]
     

    提示:

    输出的顺序没有要求。
    小时不会以零开头,比如 “01:00” 是不允许的,应为 “1:00”。
    分钟必须由两位数组成,可能会以零开头,比如 “10:2” 是无效的,应为 “10:02”。
    超过表示范围(小时 0-11,分钟 0-59)的数据将会被舍弃,也就是说不会出现 "13:00", "0:61" 等时间。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/binary-watch
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    忽略了一点,分钟数应该小于60的。

    代码:

    class Solution {
    public:
        vector<string> ans;
        int d[10] = {1,2,4,8,16,32,60,120,240,480};
        void dfs(int k,int l,int sum,int num) {
            if(sum >= 720 || l <= 6 && sum >= 60) return;
            if(k >= num) {
                string d = to_string(sum / 60) + ":";
                if(sum % 60 < 10) d += "0";
                d += to_string(sum % 60);
                ans.push_back(d);
                return;
            }
            for(int i = l;i < 10;i ++) {
                dfs(k + 1,i + 1,sum + d[i],num);
            }
        }
        vector<string> readBinaryWatch(int num) {
            dfs(0,0,0,num);
            sort(ans.begin(),ans.end());
            return ans;
        }
    };
  • 相关阅读:
    我的小问题
    js实现随机的四则运算题目
    VC++ 6.0 无法打开文件
    VC6.0致命错误 RC1015: 无法打开包含文件 'afxres.h'.解决方案
    VS2010 如何添加H文件目录和LIB目录
    学习计划(四月)
    IIS与apache的对比:大杂烩
    ubuntu下有线网卡启动(Atheros AR8161 Gigabit Ethernet)
    putty终端乱码解决办法
    Proxy Switchysharp配置
  • 原文地址:https://www.cnblogs.com/8023spz/p/13848413.html
Copyright © 2011-2022 走看看