401. Binary Watch (二进制手表)

╰半夏微凉° 2022-07-15 01:38 226阅读 0赞

A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59).

Each LED represents a zero or one, with the least significant bit on the right.

Binary_clock_samui_moon.jpg

For example, the above binary watch reads “3:25”.

Given a non-negative integer n which represents the number of LEDs that are currently on, return all possible times the watch could represent.

Example:

  1. Input: n = 1
  2. Return: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]

Note:

  • The order of output does not matter.
  • The hour must not contain a leading zero, for example “01:00” is not valid, it should be “1:00”.

  • The minute must be consist of two digits and may contain a leading zero, for example “10:2” is not valid, it should be “10:02”.

    public class Solution {

    1. public List<String> readBinaryWatch(int num) {
    2. List<String> res = new ArrayList<>();
    3. int[] time = new int[] { 1, 2, 4, 8, 1, 2, 4, 8, 16, 32 };
    4. backtrack(res, time, num, 0, 0, 0, 0);
    5. return res;
    6. }
    7. public void backtrack(List<String> res,int[] time,int num,int count,int start,int hour,int min){
    8. if(hour>11||min>59)
    9. return;
    10. if(num==count){
    11. String hh = ""+hour;
    12. String mm = min<10?"0"+min:""+min;
    13. res.add(hh+":"+mm);
    14. return;
    15. }
    16. for(int i=start;i<time.length;i++){
    17. int newHour = i<4?hour+time[i]:hour;
    18. int newMin = i<4?min:min+time[i];
    19. backtrack(res,time,num,count+1,i+1,newHour,newMin);
    20. }
    21. }

    }

发表评论

表情:
评论列表 (有 0 条评论,226人围观)

还没有评论,来说两句吧...

相关阅读

    相关 401. 二进制手表

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