103 / 205
LeetCode · MediumO'rta20 ball· ~20 daqiqa

Bitwise AND of Numbers Range

Sizga left dan right gacha bo'lgan oraliqtagi barcha sonlar berilgan (jumladan oraliq chegaralari ham kiritilgan). Ular ustida bitli VA (bitwise AND) amalini bajaring va natijani qaytaring.

example.go
func solve(left int, right int) int {
    // ...
}

Misollar

kod
Input: left = 5, right = 7
Output: 4
Tushuntirish: 5 AND 6 AND 7 = 4 (0101 & 0110 & 0111 = 0100)
kod
Input: left = 0, right = 0
Output: 0
kod
Input: left = 1, right = 2147483647
Output: 0

Maslahatlar

  1. Barcha sonlarni birma-bir AND qilish shart emas — left va right ning ikkilik (binary) yozuvidagi umumiy old qismini (common prefix) topish kifoya, chunki oraliqda kamida bitta son bu prefiksdan keyingi bitlarni "buzadi".
  2. left va right ni bir xil bo'lguncha bir vaqtda o'ngga siljiting (>>), har safar siljishlar sonini sanang; teng bo'lgach, natijani xuddi shuncha marta chapga siljitib (<<) qaytaring.