Leetcode 401 Binary Watch

Problem Statement

Solution

This is an iterative approach to solve the problem.


class Solution:
    def readBinaryWatch(self, num: int) -> List[str]:
        hours = 12
        minutes = 60
        
        b_h = [0,0,0,0]
        b_m = [0,0,0,0,0,0]
        
        results = []
        for hour in range(0,hours):
            for minute in range(0,minutes):
                if self.noOfSetBits(self.toArray(hour)) + self.noOfSetBits(self.toArray(minute)) == num:
                    _m = '0'+str(minute) if len(str(minute)) < 2 else str(minute)
                    r  = str(hour) + ':' + _m
                    results.append(r)
        return results
                    
    def toArray(self,number):
        res = []
        while(number > 0):
            d = number % 2
            res.append(d)
            number = number // 2
        return res[::-1]
    
    def noOfSetBits(self,arr):
        _num = 0
        for i in range(0,len(arr)):
            if arr[i] == 1:
                _num += 1
        return _num
· leetcode