class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(), nums.end());//排序
int s=nums.size();
for(int i=0;i+2<s;i=i+2)//循环判断
{
if(nums[i]!=nums[i+1])
{
return nums[i];
}
}
return nums[s-1];
}
};
很简单的循环两个两个遍历,不一样的那个就是那个不一样的数字。
官方题解
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ret = 0;
for (auto e: nums) ret ^= e;//遍历拷贝nums中的元素求异或
return ret;
}
};
-
拷贝range的元素时,使用for(auto x : range).
-
修改range的元素时,使用for(auto && x : range).
-
只读range的元素时,使用for(const auto & x : range).
官网链接:力扣