•
문제 설명 : 제공된 nums로 만들 수 있는 조건(|x - y| <= min(x, y)) 에 맞는 쌍들로 만들 수 있는 가장 큰 XOR 값을 반환
•
풀이 방법
◦
단순 구현은 FOR문을 사용한 O(N^2) 방식이다.
▪
이 방법으로도 통과가 되지만, hash_table을 사용한 방법은 아니라서 hash_table을 사용한 방법을 찾아보았다.
•
시간복잡도 :
•
성공 코드
class Solution:
def maximumStrongPairXor(self, nums: List[int]) -> int:
max_xor = 0
for i in range(len(nums)):
for j in range(i, len(nums)):
if abs(nums[i] - nums[j]) <= min(nums[i], nums[j]):
max_xor = max(max_xor, nums[i]^nums[j])
return max_xor
Python
복사
•
개선된 성공 코드
동일하게 중복 For문을 사용하는 것은 차이가 없다.
하지만, 내부 For의 범위가 Set을 사용한 방식으로 변경하여 탐색 범위가 줄어든 것을 알 수 있다.
만약 nums 가 [1,1,1,1,1,1,1,1,1,1,2,10] 처럼 중복 값이 많은 형태로 전달된다면 많은 시간을 감소시킬 수 있을 것이다.

class Solution:
def maximumStrongPairXor(self, nums: List[int]) -> int:
max_xor = 0
num_set = set()
for num in nums:
for x in num_set:
if abs(num - x) <= min(num, x):
max_xor = max(max_xor, num ^ x)
num_set.add(num)
return max_xor
Python
복사