single_number的线性复杂度解法

题目描述

       有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次,要求给出线性复杂度解法,且不使用任何辅助空间

思路解析

采用异或的特性。
      1.二进制运算时,相同为0,不同为1
      2.对于任何数x有  0^x=x
      3.交换律:3^5 ^3等价于 3^3 ^5
      4.自反律:3^5 ^5=3 ^0=3
所以设一初值为0的变量,对数组中每个元素异或一边即可

实现代码

class Solution {
public:
    int singleNumber(int A[], int n) {
        int result=0;
        for(int i=0;i<n;++i){
            result^=A[i];
        }
        return result;
    }
};
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读