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]