Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/03/21 23:59), 編輯推噓0(002)
留言2則, 2人參與, 1年前最新討論串68/1548 (看更多)
睡覺前騙一點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

03/22 00:00, 1年前 , 1F
大師
03/22 00:00, 1F

03/22 00:16, 1年前 , 2F
大師
03/22 00:16, 2F
文章代碼(AID): #1b_5bVEz (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1b_5bVEz (Marginalman)