401. 二进制手表 阳光穿透心脏的1/2处 2022-10-08 12:24 142阅读 0赞 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 "3:25" 。 ![20210621160113902.png][] 给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。 小时不会以零开头: 例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。 分钟必须由两位数组成,可能会以零开头: 例如,"10:2" 是无效的时间,正确的写法应该是 "10:02" 。 示例 1: 输入:turnedOn = 1 输出:\["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"\] 示例 2: 输入:turnedOn = 9 输出:\[\] 提示: 0 <= turnedOn <= 10 class Solution { public: vector<string> readBinaryWatch(int turnedOn) { //枚举 vector<string> ret; if(turnedOn==0) { ret.push_back("0:00"); return ret; } const int mx = 1<<10; for(int i = 1;i<mx;i++) { int cnt = 0, t=i; while(t>0) { if(t%2==1) cnt++; t>>=1; } if(cnt == turnedOn) { int n = i>>6; t = i-(i>>6<<6); if(n<12&&t<60) ret.push_back(to_string(n)+":"+(t<10?"0":"")+to_string(t)); } } return ret; } }; [20210621160113902.png]: /images/20221005/3b0bfdf63fec4ba1a949fe1da8df44bc.png
还没有评论,来说两句吧...