精華區beta Marginalman 關於我們 聯絡資訊
睡覺前騙一點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)) } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.110.124 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1711036767.A.3BD.html
RinNoKareshi: 大師 03/22 00:00
ZooseWu: 大師 03/22 00:16