Leetcode 401. Binary Watch
2016-10-28 22:03
246 查看
题目链接:https://leetcode.com/problems/binary-watch/
题目描述:
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.
![](https://upload.wikimedia.org/wikipedia/commons/8/8b/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:
这道题用深度优先搜索来做,backtracking,回溯法,用递归实现,递归的设计一直不太会,需要多做题强化,这个代码是参考的人家的,自己看懂了又写了一遍。
题目描述:
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.
![](https://upload.wikimedia.org/wikipedia/commons/8/8b/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:
Input: n = 1 Return: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]
这道题用深度优先搜索来做,backtracking,回溯法,用递归实现,递归的设计一直不太会,需要多做题强化,这个代码是参考的人家的,自己看懂了又写了一遍。
class Solution { public: vector<string> readBinaryWatch(int num) { vector<string> res; for(int i=max(0,num-6);i<min(num+1,4);i++) { vector<int> vec1;//用来存放时 vector<int> vec2;//用来存放分 dfs(i,0,0,4,vec1);//存放亮的个数为i时,时的所有可能结果 dfs(num-i,0,0,6,vec2);//<span style="font-family: Arial, Helvetica, sans-serif;">存放亮的个数为num-i时,分的所有可能结果</span> //保存结果 for(int i=0;i<vec1.size();i++) { for(int j=0;j<vec2.size();j++) { string tmp=to_string(vec1[i])+":"+(to_string(vec2[j]).size()==1?"0":"")+to_string(vec2[j]); res.push_back(tmp); } } } return res; } //注意dfs的设计 void dfs(int k,int val,int curIndex,int len,vector<int> &vec){ if(k==0&&len==4&&val<12) vec.push_back(val); if(k==0&&len==6&&val<60) vec.push_back(val); if(curIndex==len||k==0) return; dfs(k,val,curIndex+1,len,vec); val=val+pow(2,curIndex);curIndex++;k--; dfs(k,val,curIndex,len,vec); } };
相关文章推荐
- 位操作-leetcode 401. Binary Watch
- [leetcode]: 401. Binary Watch
- 【Leetcode】401. Binary Watch
- LeetCode-Backtracking-401. Binary Watch
- [LeetCode]401. Binary Watch
- [leetcode: Python]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 &bitset的用法&to_string
- Leetcode-401. Binary Watch
- 401. Binary Watch
- Backtracking:401. Binary Watch
- 401. Binary Watch
- 401. Binary Watch
- 401. Binary Watch
- 401. Binary Watch