Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-05-20 23:55:12
差点忘记写
最近都不怎么想写每日,我好烂
1863. Sum of All Subset XOR Totals
给一个array,请回传所有subset的XOR totals的总和
思路 :
正常backtracking下去就可以秒解了,没什么难度
然后有看到一个神奇的解法
去计算每个位元出现的次数
假设在array有k个元素
且第n个bit是1的元素有x个、是0的元素有y个,x+y=k
由于XOR的特性,我们只需要关注subset中第n位bit 1的总和是奇数的情况
有2^(x-1)*2^y=2^(k-1)种,也就是2^n会出现2^(k-1)次
接着要看第n位bi有没有出现1,所以用for循环OR所有元素
接着将结果乘上2^(k-1)次就好
golang code
func subsetXORSum(nums []int) int {
res:=0
for _,val:=range nums{
res |= val
}
return res<<(len(nums)-1)
}

Links booklink

Contact Us: admin [ a t ] ucptt.com