Blind 75 — คำถามสัมภาษณ์การเขียนโปรแกรมและทางเทคนิค — ซีรี่ส์คำอธิบาย
ปัญหา:
คำอธิบาย:
แน่นอนว่านี่เป็นคำถามไบนารี่ ดังนั้นการทำความเข้าใจการดำเนินการระดับบิตและความหมายของคำถามจึงเป็นสิ่งสำคัญยิ่ง นี่เป็นคำถามง่ายๆ ที่ดีในการแนะนำตัวเองให้รู้จักกับ leetcode แบบไบนารี สัญชาตญาณที่นี่คือคุณต้องการติดตามบิตแรก จากนั้นดำเนินการในระดับบิตกับตัวเลขนั้นในขณะที่ไม่ใช่ 0 ภายในลูปนี้ ก่อนอื่นเราสามารถตรวจสอบได้ในบิตแรกคือ 0 หรือ 1 มีสองวิธีในการ ให้ทำเช่นนี้ ถ้า (n & 1) == 1 หรือถ้า n % 2 == 1 หากคำสั่งนี้เป็นจริง บิตจะเป็นหนึ่ง และเราจะเพิ่มจำนวน เนื่องจากเราตรวจสอบเฉพาะบิตแรกของตัวเลข สิ่งที่เราทำคือเลื่อนบิตไปทางขวา 1
วิธีแก้ปัญหา — O(n):
class Solution: def hammingWeight(self, n: int) -> int: count = 0 while n != 0: if (n & 1) == 1: count += 1 n = n >> 1 return count
ข้อมูล:
เว็บไซต์: nkwade.dev
LinkedIn: linkedin.com/in/nkwade
GitHub: github.com/nkwade
อีเมล: [email protected]