[leetcode][401]. Binary Watch
2016-12-27 21:38
369 查看
下课了,做道简单题。
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:
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".
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 = 1 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".
import itertools class Solution(object): def getHour(self, n): ''' n >=0 n<4 ''' if n==0: return [0] hours = [] idxs = [0,1,2,3] temp = ['0','0','0','0'] for change_idxs in itertools.combinations(idxs,n): for v in change_idxs: temp[v] = '1' value = int(''.join(temp),2) for v in change_idxs: temp[v] = '0' if value <= 11: hours.append(value) return hours def getMinutes(self, n): ''' n>=0 n<=59 ''' if n==0: return [0] minutes = [] idxs = [0,1,2,3,4,5] temp = ['0','0','0','0','0','0'] for change_idxs in itertools.combinations(idxs,n): for v in change_idxs: temp[v] = '1' value = int(''.join(temp),2) for v in change_idxs: temp[v] = '0' if value <= 59: minutes.append(value) return minutes def readBinaryWatch(self, num): """ :type num: int :rtype: List[str] """ ans = [] for h in range(4): m = num-h if m>=0: hours = self.getHour(h) minutes = self.getMinutes(m) for h_val, m_val in itertools.product(hours,minutes): ans.append('{}:{:0>2d}'.format(h_val,m_val)) return ans
相关文章推荐
- LeetCode Binary Watch
- leetcode oj java Binary Watch
- 401. Binary Watch*
- [Leetcode]Unique Binary Search Trees II
- leetcode - Flatten Binary Tree to Linked List
- [LeetCode]题解(python):099-Recover Binary Search Tree
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] Convert Sorted List to Binary Search Tree
- Leetcode 110, Balanced Binary Tree
- Leetcode---Recover Binary Search Tree
- LeetCode | Binary Search Tree Iterator
- leetcode_题解_Minimum Depth of Binary Tree _easy需细心
- [leetcode][tree] Unique Binary Search Trees II
- 【leetcode】【145】Binary Tree Postorder Traversal
- [LeetCode 110] - 平衡二叉树 (Balanced Binary Tree)
- LeetCode | Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] Unique Binary Search Trees(!!DP)
- [Leetcode]Flatten Binary Tree to Linked List~
- Leetcode: Unique Binary Search Trees
- LeetCode——Binary Tree Paths