Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 각 쿼리에 대한 최대 XOR을 찾는 프로그램

<시간/>

크기가 n인 nums라고 하는 사전 정렬된 배열이 있고 하나의 값 b도 있다고 가정합니다. 다음 쿼리를 n번 수행하려고 합니다. -

  • nums 및 k에 있는 모든 요소의 XOR이 최대화되도록 음이 아닌 값 k <2^m을 검색합니다. 따라서 k는 i번째 쿼리에 대한 답변입니다.

  • 현재 배열 nums에서 마지막 요소를 제거합니다.

  • 배열 답변을 찾아야 합니다. 여기서 answer[i]는 i번째 쿼리에 대한 답변입니다.

따라서 입력이 nums =[0,1,1,3], m =2와 같으면 출력은 [0,3,2,3]이 됩니다. 왜냐하면

  • nums =[0,1,1,3], k =0 이후 0 XOR 1 XOR 1 XOR 3 XOR 0 =3.

  • nums =[0,1,1], k =3 이후 0 XOR 1 XOR 1 XOR 3 =3.

  • nums =[0,1], k =2 이후 0 XOR 1 XOR 2 =3.

  • nums =[0], k =3, 0 XOR 3 =3.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • x :=2^m - 1

  • 범위 0에서 숫자 - 1까지의 i에 대해 수행

    • nums[i] :=nums[i] XOR x

    • x :=숫자[i]

  • 반전 후 숫자 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums, m):
   x=2**m-1
   for i in range(len(nums)):
      nums[i]^= x
      x = nums[i]
   return(nums[::-1])

nums = [0,1,1,3]
m = 2
print(solve(nums, m))

입력

[0,1,1,3], 2

출력

[0, 3, 2, 3]