思路:注意结果向下取整; 使用二分法,通过mid*mid<=x,找到这个mid值

import java.util.*; public class Solution {

/**
 * 
 * @param x int整型 
 * @return int整型
 */
public int mysqrt (int x) {
   if(x<1) return 0;
   //定义变量为long型,否则程序运行结果错误,因为后面会有mid*mid会大于int型
   long left=1,right=x,mid=(left+right)/2; 
   while(mid!=left){ //由于题目要求向下取整,最后结果都会出现mid==left的场景
       if(mid*mid==x) {
           break;
       }
       else if(mid*mid<x) {
           left = mid; //重新定义左节点
       }
       else {
           right = mid; //重新定义右节点
       }
       mid=(left+right)/2;
   }
   return (int)mid;
}

}