leet-code/src/main/java/leetcode/editor/cn/XorOperationInAnArray.java

80 lines
1.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给你两个整数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
//
// Related Topics 位运算 数组
// 👍 76 👎 0
package leetcode.editor.cn;
//1486:数组异或操作
public class XorOperationInAnArray {
public static void main(String[] args) {
//测试代码
Solution solution = new XorOperationInAnArray().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int xorOperation(int n, int start) {
int s = start / 2;
int result = op(s - 1) ^ op(s + n - 1);
return result * 2 | n & start & 1;
}
private int op(int num) {
switch (num % 4) {
case 0:
return num;
case 1:
return 1;
case 2:
return num + 1;
default:
return 0;
}
}
}
//leetcode submit region end(Prohibit modification and deletion)
}