【leetcode?python】Binary Watch

#-*- coding: UTF-8 -*-
from itertools import combinations

class Solution(object):
    
    hourList=[8,4,2,1]
    minList=[32,16,8,4,2,1]
    
    
    def selectHour(self,hourNum):
        if hourNum==0:
            return [0]
        #迭代工具模块包含了操做指定的函数用于操作迭代器
        selectHourList=[]
        hourCombin=list(combinations(self.hourList, hourNum))
        for combine in hourCombin:
            sumT=sum(combine)
            if(sumT<=12):
                selectHourList.append(sumT)

return selectHourList
    
    def selectMinute(self,minNum):
        if minNum==0:return [0]
        #迭代工具模块包含了操做指定的函数用于操作迭代器
        selectMinList=[]
        
        minCombin=list(combinations(self.minList, minNum))
        for combine in minCombin:
            sumT=sum(combine)
            if(sumT<=59):
                selectMinList.append(sumT)

return selectMinList
    
    def combinHourMin(self,hourList,minList):

#直接使用for循环就可以了
        resultsList=[]
        for hour in hourList:
            for min in minList:
 
                minStr=str(min) if len(str(min))>1 else (‘0‘+str(min))
 
                strTmp=str(hour)+‘:‘+minStr
 
                resultsList.append(strTmp)
     
        return resultsList
    def handleResult(self,resultsList):
        reList=[]
        for item in resultsList:
            for i in item:
                reList.append(i)
        return reList
    
    def readBinaryWatch(self, num):
        if(num>8):
            return
#        elif(num<=0):
#            return ‘0:00‘
        maxHours=3 if num>=3 else num
        maxMinutes=5
        hourLeastNum=0 if (num-maxMinutes)<=0 else (num-maxMinutes)
        
        resultsList=[]

for hourNum in range(hourLeastNum,maxHours+1):

selectHourList=self.selectHour(hourNum)
            selectMinList=self.selectMinute(num-hourNum)
            resultsList.append(self.combinHourMin(selectHourList,selectMinList))

return self.handleResult(resultsList)
    
sol=Solution()
print sol.readBinaryWatch(num=0)
print len(sol.readBinaryWatch(num=0))

时间: 2024-10-29 19:05:46

【leetcode?python】Binary Watch的相关文章

【leetcode?python】Sum Of Two Number

#-*- coding: UTF-8 -*- #既然不能使用加法和减法,那么就用位操作.下面以计算5+4的例子说明如何用位操作实现加法:#1. 用二进制表示两个加数,a=5=0101,b=4=0100:#2. 用and(&)操作得到所有位上的进位carry=0100;#3. 用xor(^)操作找到a和b不同的位,赋值给a,a=0001:#4. 将进位carry左移一位,赋值给b,b=1000:#5. 循环直到进位carry为0,此时得到a=1001,即最后的sum. #!!!!!!关于负数的运算

【leetcode?python】 111. Minimum Depth of Binary Tree

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None class Solution(object):    depthList=[]    def minDepth(self, root):        ""&q

【leetcode?python】 257. Binary Tree Paths

深度优先搜索 # Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None class Solution:    # @param {TreeNode} root    # @return {string[]}        resultList=

【leetcode?python】 Maximum Depth of Binary Tree

#-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None class Solution(object):    def maxDepth(self, root):        if

【leetcode?python】 Sum of Left Leaves

#-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None class Solution(object):        def dfs(self,root,isLeft):     

【leetcode?python】 19. Remove Nth Node From End of List

双指针思想:两个指针相隔n-1,每次两个指针向后一步,当后面一个指针没有后继了,前面一个指针的后继就是要删除的节点 # Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = None class Solution(object):    def removeNthFromEnd(self,

【leetcode?python】 36. Valid Sudoku

数独规则如下:相当于一个9*9的矩阵 代码如下:#特定的九个格内1-9的个数至多为1#依次检查每行,每列,每个子九宫格是否出现重复元素,如果出现返回false,否则返回true.class Solution(object):    def isValidSudoku(self, board):        """        :type board: List[List[str]]        :rtype: bool        """

【leetcode?python】 203. Remove Linked List Elements

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = None class Solution(object):    def removeElements(self, head, val):        """        :type head: ListNode

【leetcode?python】 88. Merge Sorted Array

class Solution(object):    def merge(self, nums1, m, nums2, n):        """        :type nums1: List[int]        :type m: int        :type nums2: List[int]        :type n: int        :rtype: void Do not return anything, modify nums1 in-place