Leetcode 401 Binary Watch
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