BP暴力:
private static int xSqert(int x){
if (x==1){return 1;}
for (int i = 2; i < x; i++) {
if (i*i==x){
return i;
}
else if (i*i<x && (i+1)*(i+1)>x){
return i;
}
}
return 0;
}
1.二分法
这里的二分法的是O(logn)而暴力算法是O(根号x),好一点:
public class leetcode7 {
public static void main(String[] args) {
System.out.println(binarySearch(24));
}
//这里传进来的x是正整数
public static int binarySearch(int x){
int index=-1,left=0,right=x;
while (left<=right){
int mid=left+(right-left)/2;
if ((long)mid*mid<=x){
index=mid;
left=left+1;
}else {
right=mid-1;
}
}
return index;
}
}