题解 | #平方根#
平方根
https://ac.nowcoder.com/acm/problem/22003
import java.util.Scanner;
import java.lang.Math;
/**
*不用库函数实现(二分法实现)
*/
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
//一个数的算术平方根一定小于等于这个数的一半
int[] arr = new int[a / 2];
//在当前数组中一定存在目标值
for(int i = 1; i <= arr.length; i++){
arr[i - 1] = i;
}
int left = 0;
int right = arr.length - 1;
int mid = -1;
//二分查找
while(left <= right){
mid = (left + right) / 2;
if(arr[mid] * arr[mid] == a){
break;
}else if(arr[mid] * arr[mid] < a){
left = mid + 1;
}else if(arr[mid] * arr[mid] > a){
right = mid - 1;
//当数值平方超过原数值,则不能取,应该取当前下标的前一位下标对应的数
mid--;
}
}
System.out.println(arr[mid]);
}
}