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
示例 4:
输入:n = 10, start = 5 输出:2
提示:
1 <= n <= 1000
0 <= start <= 1000
n == nums.length
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-12 17:45:08
impl Solution { pub fn xor_operation(n: i32, start: i32) -> i32 { (1..n).map(|x| 2*x + start).fold(start, |acc, x| acc^x) } } /* 解法二 impl Solution { pub fn xor_operation(n: i32, start: i32) -> i32 { (start..) .step_by(2) .take(n as usize) .fold(0, |i, j| i ^ j) } } */
java 解法, 执行用时: 0 ms, 内存消耗: 37.8 MB, 提交时间: 2023-09-12 17:43:34
class Solution { public int xorOperation(int n, int start) { int ans = 0; for (int i = 0; i < n; ++i) { ans ^= (start + i * 2); } return ans; } }
java 解法, 执行用时: 0 ms, 内存消耗: 37.9 MB, 提交时间: 2023-09-12 17:43:20
class Solution { public int xorOperation(int n, int start) { int s = start >> 1, e = n & start & 1; int ret = sumXor(s - 1) ^ sumXor(s + n - 1); return ret << 1 | e; } public int sumXor(int x) { if (x % 4 == 0) { return x; } if (x % 4 == 1) { return 1; } if (x % 4 == 2) { return x + 1; } return 0; } }
javascript 解法, 执行用时: 60 ms, 内存消耗: 40.8 MB, 提交时间: 2023-09-12 17:43:03
/** * @param {number} n * @param {number} start * @return {number} */ var xorOperation = function(n, start) { let s = start >> 1, e = n & start & 1; let ret = sumXor(s - 1) ^ sumXor(s + n - 1); return ret << 1 | e; }; const sumXor = (x) => { if (x % 4 === 0) { return x; } if (x % 4 === 1) { return 1; } if (x % 4 === 2) { return x + 1; } return 0; }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-09-12 17:42:45
func sumXor(x int) int { switch x % 4 { case 0: return x case 1: return 1 case 2: return x + 1 default: return 0 } } func xorOperation(n, start int) (ans int) { s, e := start>>1, n&start&1 ret := sumXor(s-1) ^ sumXor(s+n-1) return ret<<1 | e }
python3 解法, 执行用时: 44 ms, 内存消耗: 16 MB, 提交时间: 2023-09-12 17:42:17
class Solution: def xorOperation(self, n: int, start: int) -> int: from functools import reduce return reduce(lambda x, y: x ^ (start+y*2), range(n), 0)
python3 解法, 执行用时: 48 ms, 内存消耗: 16 MB, 提交时间: 2023-09-12 17:40:09
class Solution: def xorOperation(self, n: int, start: int) -> int: ans = 0 for i in range(n): ans ^= (start + i * 2) return ans
php 解法, 执行用时: 12 ms, 内存消耗: 18.7 MB, 提交时间: 2023-09-12 17:38:34
class Solution { /** * @param Integer $n * @param Integer $start * @return Integer */ function xorOperation($n, $start) { if ( $n == 1 ) return $start; return array_reduce(range(1, $n-1), function($a, $b) use($start) { return $a ^ ($start + 2 * $b); }, $start); } }
php 解法, 执行用时: 8 ms, 内存消耗: 18.9 MB, 提交时间: 2023-09-12 17:32:17
class Solution { /** * @param Integer $n * @param Integer $start * @return Integer */ function xorOperation($n, $start) { $ans = $start; for ( $i = 1; $i < $n; $i++ ) { $ans ^= $start + 2 * $i; } return $ans; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-09 10:33:07
func xorOperation(n int, start int) int { ans := start for i := 1; i < n; i++ { ans ^= start + 2 * i } return ans }