一、问题描述
给你两个整数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.
考察
位运算简单题型 建议用时5~20min
三、问题分析
本题是位运算的第4题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:
这一题本质上就是考察对位运算中异或运算法则的熟练使用,对于异或而言:
符号:^运算规则:两个二进制位相反为1,相同为0示例:1001^0111=1110
接下来,我们只需要运用简单的for循环先将数组的值计算出来,随之进行异或运算,最后输出结果即可!
四、编码实现
classSolution { public: intxorOperation(intn, intstart) { inti,ans;//初始化定义vector<int>nums(n+1);//定义一维数组存储规律值for(i=0;i<n;i++)//for循环 { nums[i]=start+2*i;//规律计算if(i==0) { ans=nums[0];//初值赋值 } elseans=ans^nums[i];//异或计算 } returnans;//输出结果 } };