1. 解题思路
这一题其实算是一个脑筋急转弯的题目,我们稍微经过一些数学分析即可发现,由于给到的数恰好为
1
1
1到
n
n
n,因此假设
n
n
n的二进制位一共有
m
m
m位,则对于任意小于
2
m
2^m
2m的数
k
k
k,我们总能找到3个数
x
,
y
,
z
x,y,z
x,y,z,使之满足x^y^z=k
。
这里仅存在两个特殊情况,即 n < 3 n < 3 n<3的情况,此时必然有一到两个数会被多次选用,因此答案会出现一些偏差。
2. 代码实现
给出python代码实现如下:
class Solution:
def uniqueXorTriplets(self, nums: List[int]) -> int:
n = len(nums)
if n <= 2:
return n
return 2**(len(bin(n)[2:]))
提交代码评测得到:耗时0ms,占用内存30.3MB。