Re: [閒聊] 每日leetcode
看板Marginalman作者JerryChungYC (JerryChung)時間1年前 (2024/11/09 06:27)推噓0(0推 0噓 2→)留言2則, 1人參與討論串1099/1548 (看更多)
https://leetcode.com/problems/maximum-xor-for-each-query
1829. Maximum XOR for Each Query
字太多 不說了
就給一個 nums
先計算所有的 xor
然後配上一個 k 使得結果為小於 2^maximumBit 的最大值
排掉最後一個 num 後循環繼續做
思路:
反著做 最後再 reverse()
在研究 XOR 的時候 發現一篇文章 a, b 進行三次 XOR 就能把 a, b 互換
a, b = 5, 11
a = a ^ b (14, 11)
b = a ^ b (14, 5)
a = a ^ b (11, 5)
首先跟 0 xor 後再跟 2^maximumBit-1 xor 就能得到 k
將 k 加入 list 後再跟 2^maximumBit-1 做一次 xor 就能恢復到原本的進度
重複循環就好
Python Code:
class Solution:
def getMaximumXor(self, nums: List[int], maximumBit: int) -> List[int]:
ans = []
maximized = 2 ** maximumBit - 1
k = 0
for num in nums:
k ^= num
k ^= maximized
ans.append(k)
k ^= maximized
ans.reverse()
return ans
原本以為那個做三次對這題沒幫助 結果剛才突然開竅 還不錯 睡覺去 晚安
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.20.205 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1731104831.A.285.html
→
11/09 06:34,
1年前
, 1F
11/09 06:34, 1F
→
11/09 06:35,
1年前
, 2F
11/09 06:35, 2F
class Solution:
def getMaximumXor(self, nums: List[int], maximumBit: int) -> List[int]:
ans = []
maximized = 2 ** maximumBit - 1
for num in nums:
maximized ^= num
ans.append(maximized)
ans.reverse()
return ans
原來只要一次就好 啊這
※ 編輯: JerryChungYC (114.45.20.205 臺灣), 11/09/2024 06:47:09
討論串 (同標題文章)
完整討論串 (本文為第 1099 之 1548 篇):