# 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)