首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >401. 二进制手表

401. 二进制手表

作者头像
编程张无忌
发布2021-06-22 22:03:08
发布2021-06-22 22:03:08
75200
代码可运行
举报
文章被收录于专栏:悟道悟道
运行总次数:0
代码可运行

二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 "3:25" 。

给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。 小时不会以零开头: 例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。 输入:turnedOn = 1 输出:["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]

代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
     List<String> res=new ArrayList();//存放结果
    public List<String> readBinaryWatch(int turnedOn) {
        int  used[] =new int[10];
        dfs(turnedOn,used,0);
        return res;
    }
    public void dfs(int turnedOn,int[] used,int cur){//开灯剩余数量  模拟灯的数组 1开灯 0关灯  cur代表当前要开灯的地方
        if(turnedOn==0){
            int hour=1*used[0]+2*used[1]+4*used[2]+8*used[3];
            int minute=1*used[4]+2*used[5]+4*used[6]+8*used[7]+16*used[8]+32*used[9] ;
            if(hour<12&&minute<60){
                res.add(format(hour,minute));
            }
        }

        for(int i=cur;i<used.length;i++){//因为开灯的地方,每一个点都有可能
            used[i]=1;
            dfs(turnedOn-1,used,i+1);//开灯数量-1,   要开灯的地方+1,防止开重复了
            used[i]=0;//回溯
        }

    }
    public String format(int hour,int minute){//返回指定格式 hour:minute
        StringBuilder sb=new StringBuilder();
        sb.append(hour+":");
        if(minute<10){
             sb.append("0");
             sb.append(minute);
        }else{
            sb.append(minute);
        }
        return sb.toString();
       
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档