Leetcoder:single-number 、Sqrt

Leetcode-Sqrt-牛顿逼近法:注,数学的重要性

 int sqrt(int x) {

        long num  = x;

        while(num * num > x )

        {

            num = (num + x/num)/2;

        }

        return num;

}

 

 

Leetcode-single-number

现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次。

注意:

你需要给出一个线性时间复杂度的算法,你能在不使用额外内存空间的情况下解决这个问题么?

 int singleNumber(int A[], int n) {

        int num = 0 ;

        for(int i = 0 ; i < n ; i++)

            num ^= A[i];

        return num;

    }

A

A1  

B

结果

0

0

0

0

1

1

0

0

0

0

1

1

1

1

1

1

从数学方面分析,就是上面的情况

a

b

A^b

1

0

1

1

1

0

0

0

0

0

1

1

 

这就是一直异或的来历,A,A1相等,每位进行异或之后,一定为0,而0无论异或1或者0都等于他本身,那么从第一个开始依次一直异或的结果就是只出现一次的数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值