LeetCode 题解工作台
数组异或操作
给你两个整数, n 和 start 。 数组 nums 定义为: nums[i] = start + 2*i (下标从 0 开始)且 n == nums.length 。 请返回 nums 中所有元素按位异或( XOR )后得到的结果。 示例 1: 输入: n = 5, start = 0 输出: …
2
题型
5
代码语言
3
相关题
当前训练重点
简单 · 数学·位运算
答案摘要
我们可以直接模拟算出数组中所有元素的异或结果。 时间复杂度 ,其中 为数组长度。空间复杂度 。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 数学·位运算 题型思路
题目描述
给你两个整数,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 <= 10000 <= start <= 1000n == nums.length
解题思路
方法一:模拟
我们可以直接模拟算出数组中所有元素的异或结果。
时间复杂度 ,其中 为数组长度。空间复杂度 。
class Solution:
def xorOperation(self, n: int, start: int) -> int:
return reduce(xor, ((start + 2 * i) for i in range(n)))
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | Depends on the final approach |
| 空间 | Depends on the final approach |
面试官常问的追问
外企场景- question_mark
Looking for correct use of XOR on array elements derived from arithmetic sequence.
- question_mark
Expect recognition of bit manipulation patterns that allow avoiding full array construction.
- question_mark
Checking for awareness of edge cases when start or n produces repeated XOR patterns.
常见陷阱
外企场景- error
Attempting to sum elements instead of XOR.
- error
Forgetting to increment by 2 in the sequence leading to incorrect nums generation.
- error
Overcomplicating solution instead of using XOR periodicity for optimization.
进阶变体
外企场景- arrow_right_alt
Compute XOR for an array with different step sizes instead of 2.
- arrow_right_alt
Calculate XOR where nums[i] = start + i^2, blending arithmetic and bit manipulation.
- arrow_right_alt
Determine XOR after filtering elements by a condition, e.g., nums[i] % 2 == 0.