69-Sqrt(x)
//返回x的平方根,其中x非负数,返回类型是整数,结果只保留整数部分,小数部分被舍去 //从1检验到x/2
class solution69{
public int mySqrt(int x) {
if(x==1)return 1;
long i=1;
for(i=1;i<=x/2;i++) {
if(i*i>x) {
return (int)i-1;
}
}
return (int)i-1;
}
//方法2,可以用二分查找来找
//因为从0开始可以构成一个升序序列二分查找的范围是[1,x/2]要对x<4做特殊处理
public int mySqrt2(int x) {
if(x<=4) {
if(x==4) {
return 2;
}else {
return 1;
}
}
int left=1;
int right=x/2;
while(left<right) {
int mid=(left+right)/2;
if(mid*mid<x) {
right=mid;
}else {
left=mid;
}
}
return left;
}
public int mySqrt02(int x) {
if(x<2) {
return x;
}
int l=0,r=x/2;
while(l<r) {
//右偏,使得<=可以整合到一起
int m=l+(r-l+1)/2;
if(m>x/m) {
r=m-1;
}else {
l=m;
}
}
return l;
}
}
421-Maximum XOR of Two Numbers in an Array (位的异或)
136-Single Number (位的异或)
137-Single Number II (重要!)
260-Single Number III (136题的升级,注意查看二进制位的相关操作)
201-Bitwise AND of Numbers Range
190-Reverse Bits
191-Number of 1 Bits (注意与190题相似的整体位操作解法)
461-Hamming Distance
371-Sum of Two Integers (无符号实现±*运算,位操作的基本操作)
169-Majority Element
338-Counting Bits
187-Repeated DNA Sequences
476-Number Complement