题目是LeetCode第194场周赛的第一题,链接:1486. 数组异或操作。具体描述为:给你两个整数,n
和start
。数组nums
定义为:nums[i] = start + 2*i
(下标从0
开始)且n == nums.length
。请返回 nums 中所有元素按位异或(XOR)后得到的结果。
示例1:
输入:n = 5, start = 0
输出:8
解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。
"^" 为按位异或 XOR 运算符。
示例2:
输入:n = 4, start = 3
输出:8
解释:数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.
示例3:
输入:n = 1, start = 7
输出:7
示例3:
输入:n = 10, start = 5
输出:2
没啥难度,直接模拟这个操作就好了。时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( 1 ) O(1) O(1)。
JAVA版代码如下:
class Solution {
public int xorOperation(int n, int start) {
int result = start;
int num = start;
for (int i = 1; i < n; ++i) {
num += 2;
result ^= num;
}
return result;
}
}
提交结果如下:
当然这道题还是有 O ( 1 ) O(1) O(1)的解法的,具体可以看这里。
Python版代码如下:
class Solution:
def xorOperation(self, n: int, start: int) -> int:
result = 0
for i in range(n):
result ^= start
start += 2
return result
提交结果如下: