freedom.9
Senior Member
Bài này AC hơi cao hư cấu nhỉ, nhưng mà làm quen bit manipulation cũng không khó lắm
=> Đã hiểu lí do, thế mà ko nghĩ ra cách đơn giản thế nghĩ hơi phức tạp
Python:
class Solution:
def getMaximumXor(self, nums: List[int], maximumBit: int) -> List[int]:
n = len(nums)
xOr = 0
for num in nums:
xOr = xOr ^ num
maxK = 2**maximumBit
ans = []
for i in range(n - 1, -1, -1):
current = 0
currentK = maxK
for j in range(32, -1, -1):
if xOr >> j & 1 == 0 and 1 << j < currentK:
currentK -= 1 << j
current |= 1 << j
ans.append(current)
xOr ^= nums[i]
return ans
Python:
class Solution:
def getMaximumXor(self, nums: List[int], maximumBit: int) -> List[int]:
n = len(nums)
xOr = 0
for num in nums:
xOr = xOr ^ num
maxK = (1 << maximumBit) - 1
ans = [0]*n
for i in range(n - 1, -1, -1):
ans[n - i - 1] = maxK ^ xOr
xOr ^= nums[i]
return ans
Sửa lần cuối:





