74 / 205
LeetCode · EasyOson10 ball· ~15 daqiqa

Power of Two

Butun son n berilgan. Agar u 2 ning darajasi bo'lsa true, aks holda false qaytaring.

Yani, agar x butun son topilib n == 2^x tenglik bajarilsa, u holda n soni 2 ning darajasi hisoblanadi.

example.go
func solve(n int) bool {
    // ...
}

Misollar

kod
Input: n = 1
Output: true
Tushuntirish: 2^0 = 1.
kod
Input: n = 16
Output: true
kod
Input: n = 3
Output: false

Maslahatlar

  1. 2 ning darajalari ikkilik ko'rinishda faqat bitta 1 bitiga ega bo'lishini eslang — bu holatni bitli amallar bilan tezda tekshirish mumkin.
  2. n musbat bo'lishi va n & (n-1) ifodasi 0 ga teng bo'lishi kerak — chunki n-1 operatsiyasi eng oxirgi 1 bitni va undan keyingi barcha nollarni "1" ga aylantiradi, shu sabab AND natijasi faqat yagona bit bo'lganda 0 bo'ladi.