Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-03-21 23:59:25
睡覺前騙一點P幣,想起來我檔案還沒打 幹
137. Single Number I
有一個array nums,裡面所有數字都出現3次,只有1個數字出現過1次
請問出現過1次的數字是哪個?
思路
出現3次就沒辦法用XOR了
因為題目的constrain有提到所有數字介於-2^31~2^31-1
要以bit為單位去記錄每個數字1-32bit的狀態
如果該數字的第n個bit是1就+1,將最後的總合%3,結果就是答案第n個bit的狀態
然後我code最後要先把答案轉成int32再轉回int
是因為在golang中int是64位元,如果不這樣做負數的sign extension會讓結果出錯
golang code
func singleNumber(nums []int) int {
sum:=0
ans:=0
for i:=0;i<32;i++{
sum=0
for _,val:=range nums{
if val&(1<<i)!=0{
sum++
}
}
if sum%3!=0{
ans|=(1<<i)
}
}
return int(int32(ans))
}
作者: RinNoKareshi (立石凜的男友)   2024-03-22 00:00:00
大師
作者: ZooseWu (N5)   2024-03-22 00:16:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com