import java.util.*; public class Solution { /** * * @param x int整型 * @return int整型 */ public int mysqrt (int x) { // write code here int left = 1; int right = x; long mid = (left + right) / 2; // 在这里需要注意一个小细节: mid作为int类型数据。他的平方是完全可能超过int的取值范围的,需要使用long保证其不溢出 while(left < right) { if (mid * mid <= x && (mid + 1) * (mid + 1) > x) { break; } if (mid * mid > x) { right = (int) mid; } else{ left = (int) mid; } mid = (left + right) / 2; } return (int) mid; } }