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

Sum of Two Integers

Sizga ikkita butun son a va b berilgan. Ularning yig'indisini + yoki - operatorlaridan foydalanmasdan qaytaring.

Yechim uchun bit amallaridan foydalaning: XOR (^) — qo'shishning "ko'chirmasiz" natijasi, AND (&) va chapga surish (<<) — ko'chirma (carry) bitlari.

example.go
func solve(a int, b int) int {
    // ...
}

Misollar

kod
Input: a = 1, b = 2
Output: 3
kod
Input: a = 2, b = 3
Output: 5
kod
Input: a = -1, b = 1
Output: 0

Maslahatlar

  1. Qo'shish amalini bitli operatsiyalar orqali ifodalash mumkinligini o'ylab ko'ring — XOR "ko'chirishsiz qo'shish"ni, AND esa qayerda ko'chirish (carry) yuzaga kelishini ko'rsatadi.
  2. b nolga aylanguncha davom eting: har safar carry ni (a & b) << 1 sifatida hisoblang, a ni a XOR b bilan yangilang, so'ng b ni carry ga tenglashtiring — b nolga aylanganda a natijaviy yig'indini beradi.