---
# System prepended metadata

title: 1486. XOR Operation in an Array

---

# 1486. XOR Operation in an Array

## 題目概要

給定 n 和 start，n 為陣列長度，start 為從哪個數開始。
陣列中的每個元素都比上一個元素多2，請求出陣列所有元素 XOR 的結果。

```
Example 1:

Input: n = 5, start = 0
Output: 8
Explanation: Array nums is equal to [0, 2, 4, 6, 8] where (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8.
Where "^" corresponds to bitwise XOR operator.

Example 2:

Input: n = 4, start = 3
Output: 8
Explanation: Array nums is equal to [3, 5, 7, 9] where (3 ^ 5 ^ 7 ^ 9) = 8.
```

## 解題技巧

- 從 start 開始每個元素之間差 2，公式為：`(start + (2 * i))`。

## 程式碼

寫法一：

```javascript=
/**
 * @param {number} n
 * @param {number} start
 * @return {number}
 */
var xorOperation = function(n, start) {
    let result = 0;
    for(let i = 0; i < n; i++) {
        result ^= start + 2 * i;
    }

    return result;
};
```

![](https://i.imgur.com/fSfyG80.png)

寫法二：

先命一個長度為 n 的陣列並且以 0 填滿，再用 map 遍歷填上每個元素的值，最後用 reduce 做 XOR 計算。

```javascript=
/**
 * @param {number} n
 * @param {number} start
 * @return {number}
 */
var xorOperation = function(n, start) {
    return Array(n)
        .fill(0)
        .map((x, i) => start + 2 * i)
        .reduce((prev, cur) => prev ^ cur, 0);
};
```

![](https://i.imgur.com/gzqjfg9.png)
