javaee论坛

普通会员

225648

帖子

345

回复

359

积分

楼主
发表于 2019-10-30 13:35:37 | 查看: 65 | 回复: 0

二进制手表顶部有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”。

 

publicclassSolution{List<Time>listTime=null;privatestaticclassTime{inttype;inttime;Time(inttype,inttime){this.type=type;this.time=time;}}publicSolution(){listTime=newArrayList<>();//1、初始化小时listTime.add(newTime(1,1));listTime.add(newTime(1,2));listTime.add(newTime(1,4));listTime.add(newTime(1,8));//2、初始化分钟listTime.add(newTime(2,1));listTime.add(newTime(2,2));listTime.add(newTime(2,4));listTime.add(newTime(2,8));listTime.add(newTime(2,16));listTime.add(newTime(2,32));}publicList<String>readBinaryWatch(intnum){//1、建立返回链表List<String>list=newLinkedList<>();//2、dfsdfs(list,0,num,newLinkedList<Time>());returnlist;}privatevoiddfs(List<String>list,intindex,intend,LinkedList<Time>dempList){//1、结束if(dempList.size()==end){Strings=makeTime(dempList);if(s!=null){list.add(s);}return;}//2、dfsfor(inti=index;i<listTime.size();i++){dempList.addLast(listTime.get(i));dfs(list,i+1,end,dempList);dempList.removeLast();}}/***功能描述制作时间*/privatestaticStringmakeTime(LinkedList<Time>dempList){//1、初始化时间inthour=0;intminute=0;Iterator<Time>iterator=dempList.iterator();//2、遍历时间链表while(iterator.hasNext()){Timetime=iterator.next();if(time.type==1){hour=hour+time.time;}elseif(time.type==2){minute=minute+time.time;}}//3、统计if(hour>11||minute>59){returnnull;}else{Stringstr=null;if(minute==0&&hour!=0){str=hour+":00";}elseif(hour==0&&minute!=0){if(minute>=10){str="0:"+minute;}else{str="0:0"+minute;}}else{if(minute>=10){str=hour+":"+minute;}else{str=hour+":0"+minute;}}returnstr;}}}

 


您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017