0
点赞
收藏
分享

微信扫一扫

算法题每日一练---第49天:数组异或操作

一、问题描述

给你两个整数,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.

考察

1.位运算简单题型
2.建议用时5~20min

三、问题分析

本题是位运算的第4题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:

算法题每日一练---第45天:位运算

这一题本质上就是考察对位运算中异或运算法则的熟练使用,对于异或而言:

**符号**:^

**运算规则**:两个二进制位相反为1,相同为0

**示例**:1001^0111=1110

接下来,我们只需要运用简单的for循环先将数组的值计算出来,随之进行异或运算,最后输出结果即可!

四、编码实现

```c++
class Solution {
public:
int xorOperation(int n, int start) {
int i,ans;//初始化定义
vector<int>nums(n+1);//定义一维数组存储规律值
for(i=0;i<n;i++)//for循环
{
nums[i]=start+2*i;//规律计算
if(i==0)
{
ans=nums[0];//初值赋值
}
else
ans=ans^nums[i];//异或计算

    }
    return ans;//输出结果

}

};


## 五、测试结果

![1.png](https://s4.51cto.com/images/blog/202205/15220910_628109864fde362189.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![2.png](https://s4.51cto.com/images/blog/202205/15220910_6281098624f4523026.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
举报

相关推荐

0 条评论