64 / 205
LeetCode · EasyOson10 ball· ~10 daqiqa

Number Complement

Sizga musbat butun son num berilgan. Uning to'ldiruvchi sonini (complement) toping.

To'ldiruvchi son — bu asl sonning har bir bitini teskari qilib (0 → 1, 1 → 0) hosil qilingan son. Faqat sonning ikkilik ko'rinishidagi muhim bitlari (leading zeros emas) teskari qilinadi.

example.go
func solve(num int) int {
    // ...
}

Misollar

kod
Input: num = 5
Output: 2
Tushuntirish: 5 ning ikkilik ko'rinishi 101.
Uni teskari qilsak 010, ya'ni 2.
kod
Input: num = 1
Output: 0
kod
Input: num = 7
Output: 0

Maslahatlar

  1. Sonning barcha bitlarini teskari qilish uchun sonning necha xonali (bitli) ekanini bilishga to'g'ri keladi — shu uzunlikda "hammasi 1" bo'lgan maska yaratishni o'ylang.
  2. num dan katta yoki teng bo'lguncha maskani chapga surib 1 bilan to'ldirib boring (masalan 1, 11, 111, ... ikkilikda), so'ng num ni shu maska bilan XOR qiling — natija to'ldiruvchi son bo'ladi.