「每日LeetCode」2021年5月2日

本文最后更新于:2023年3月19日 晚上

Lt1486. 数组异或操作

1486. 数组异或操作

给你两个整数,nstart
数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length
请返回 nums 中所有元素按位异或(XOR)后得到的结果。
示例 1:

1
2
3
4
输入:n = 5, start = 0
输出:8
解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8
"^" 为按位异或 XOR 运算符。

示例 2:

1
2
3
输入:n = 4, start = 3
输出:8
解释:数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.

示例 3:

1
2
输入:n = 1, start = 7
输出:7

示例 4:

1
2
输入:n = 10, start = 5
输出:2

提示:

  • 1 <= n <= 1000
  • 0 <= start <= 1000
  • n == nums.length

思路

一个变量记录前一个数,一个变量记录异或后的数,循环后,返回结果即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {number} n
* @param {number} start
* @return {number}
*/
var xorOperation = function (n, start) {
let prev = start,
res = start;
for (let i = 1; i < n; i++) {
const num = start + 2 * i;
prev = num;
res ^= prev;
}
return res;
};