สมมติว่ามีตัวเลข n เราต้องหาจำนวนบิต 1 ในการแทนค่าบинаร์ของตัวเลขนั้น
เช่น ถ้าอินพุตคือ 12 ผลลัพธ์จะเป็น 2
ขั้นตอนการแก้ปัญหา
- count := 0
- while n ไม่ใช่ 0 ทำ
- count := count + (n AND 1)
- n := floor(n / 2)
- คืนค่า count
ตัวอย่างโค้ด
class Solution:
def solve(self, n):
count = 0
while n:
count += n & 1
n >>= 1
return count
ob = Solution()
print(ob.solve(12))
อินพุต
12
เอาต์พุต
2