[LeetCode]--401. Binary Watch(递归有点懵)
来源:互联网 发布:淘宝感谢卡 编辑:程序博客网 时间:2024/06/01 18:16
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.
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:
Input: n = 1Return: ["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 { int hour[] = new int[] { 1, 2, 4, 8 }; int minu[] = new int[] { 1, 2, 4, 8, 16, 32 }; public List<String> readBinaryWatch(int num) { List<String> res = new ArrayList<String>(); for (int i = 0; i <= num; i++) { dspCombination(hour, i, 0, true); dspCombination(minu, num - i, 0, false); for (int m : hs) { for (int n : ms) { if (n == 0) res.add("" + m + ":00"); else { if (n / 10 == 0) res.add("" + m + ":0" + n); else res.add("" + m + ":" + n); } } } hs.clear(); ms.clear(); } return res; } List<Integer> list = new ArrayList<Integer>(); List<Integer> hs = new ArrayList<Integer>(); List<Integer> ms = new ArrayList<Integer>(); private void dspCombination(int[] nums, int k, int level, boolean flag) { if (list.size() == k) { int sum = 0; for (int num : list) { sum += num; } if (flag) { // 当前是hour if (sum <= 11) hs.add(sum); } else { if (sum <= 59) ms.add(sum); } return; } else if (list.size() > k) { return; } else { for (int i = level; i < nums.length; i++) { list.add(nums[i]); dspCombination(nums, k, i + 1, flag); list.remove(list.size() - 1); } } }}
- [LeetCode]--401. Binary Watch(递归有点懵)
- 401.leetcode Binary Watch(easy)[递归回溯]
- 【Leetcode】401. Binary Watch
- [LeetCode]401. Binary Watch
- LeetCode 401. Binary Watch
- [leetcode]401. Binary Watch
- Leetcode 401. Binary Watch
- LeetCode 401. Binary Watch
- LeetCode 401. Binary Watch
- LeetCode 401. Binary Watch
- leetcode 401. Binary Watch
- 【LeetCode】 401. Binary Watch
- [LeetCode]401. Binary Watch
- 401. [LeetCode]Binary Watch
- Leetcode 401. Binary Watch
- Leetcode: 401. Binary Watch
- LeetCode 401. Binary Watch
- 【Leetcode】401. Binary Watch
- 杂记
- Linux中设置服务自启动的三种方式
- LeetCode: Arithmetic Slices
- 输出两数的较大者
- echarts学习2----地图的改造以及主图副图的联动
- [LeetCode]--401. Binary Watch(递归有点懵)
- 导航条返回键带的title太讨厌了,怎么让它消失?
- VGG合成文字数据生成方法
- android日常开发内存优化注意点
- Android 空间的阴影第三方库,ShadowViewHelper的使用
- 2016-ICPC-大连赛区总结
- TW Homework
- andorid 问题集合
- 哪一个更快:read,fread,ifstream或者mmap