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都等于他本身,那么从第一个开始依次一直异或的结果就是只出现一次的数。
本文深入解析了LeetCode上的两个经典算法题目:牛顿逼近法求平方根和使用异或运算找出数组中唯一出现一次的数字。通过详细的代码示例和数学原理分析,帮助读者理解算法背后的逻辑和实现细节。

被折叠的 条评论
为什么被折叠?



