题目描述:
给你两个整数,n 和 start 。
数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。
请返回 nums 中所有元素按位异或(XOR)后得到的结果。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/xor-operation-in-an-array
解题思路:
由于本人是算法新手第一次写出来的不是最优的写法(附带官方解题答案)
我的思路是把数组先生成出来,然后再遍历数组去进行异或,但是官方题解直接省去了存入数组这一无关紧要的步骤,直接生成完数组元素直接进行异或计算。
class Solution {
public int xorOperation(int n, int start) {
int [] nums = new int [n];
for(int i = 0;i < n; i++){
nums[i] = start + 2 * i;
}
int result = nums[0];
for(int a = 1;a < n;a++){
result = (result ^ nums[a]);
}
return result;
}
}
官方题解
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;
}
}
来源:力扣(LeetCode)官方题解
总结:
由于刚刚接触接触算放所以基本都是以通过为主,会把这些题放到收藏夹中后期重刷找到更简洁的算法和不同思路的算法。再后面做题会尽量考虑代码是否能优化去掉一些不必要的操作,让代码更简洁。