Easybit-manipulation
Single Number
Problem (yeniden ifade)
Her eleman iki kez görünür, biri hariç. Tek olanı bul.
Sezgi
a⊕a=0, a⊕0=a; XOR fold çiftleri iptal eder.
Yaklaşımlar
XOR fold
DoğrulanmadıZaman O(n)Alan O(1)
Fikir. x = 0; nums içindeki her v için: x ^= v.
Adım adım. [4,1,2,1,2] → 4.
Trade-off’lar. O(1) alan vs hash set O(n).
Çözüm
export function singleNumber(nums: number[]): number {
let x = 0;
for (const v of nums) x ^= v;
return x;
}
export function singleNumber(nums: number[]): number {
let x = 0;
for (const v of nums) x ^= v;
return x;
}
Şablon bağlantısı
Bit XOR kimliği.
Yansıma
- XOR birleşmeli.
a^a = 0,a^0 = a. Çiftler düşer, tek sayı kalır. - Sıra önemsiz. Tek eleman kendisi. 0 kimliktir.
- İki tek sayı olsaydı XOR ikisinin karışımı olurdu. Problem bir tek garanti eder.