第十天?大概

利用位或异(’^’)
位或异的效果为,以2,5,7为例
如果第一位输入为5,第二位为7,则有
5:101
7:111
位或非即若两数相同得到0,不相同为1
end:010与二进制的2相同,但不代表已输入2,所以不可以提前输出
再输入2可以得到000,同理如果之后输入2,5得到的就是111,即7;2,7得到的为101,即5;5,7得到的为010,即2,与题目要求相同,可以作为解题方法
代码执行

int singleNumber(vector<int>& nums) {
    
    
    int size = nums.size();
    int sum = 0;
    for(int r = 0;r < size;++r){
    
    
        sum = nums[r] ^ sum;
    }
    return sum;
}

重整排序,检测

int singleNumber(vector<int>& nums) {
    
    
    sort(nums.begin(),nums.end());
    for(int r = 0;r + 1 < nums.size();++r){
    
    
        if(nums[r] == nums[r + 1]) ++r;
        else return nums[r];
    }
    return nums[nums.size() - 1];
}

猜你喜欢

转载自blog.csdn.net/AgaSS1225/article/details/112908111