注意溢出问题
sqrt(x)中low, high, mid均要设为long类型,原因是在运行过程中若采用int类型,则mid*mid的结果采用int类型可能会溢出。
public class Solution { public int mySqrt(int x) { if (x < 0) { return -1; } long low = 0; long high = x; long mid = low + (high - low) / 2; while (low <= high) { mid = low + (high - low) / 2; if (mid * mid < x) { low = mid + 1; } else if (mid * mid > x) { high = mid - 1; } else { return (int)mid; } } return (int)high; } }
posted on 2015-11-19 10:57 ShinningWu 阅读(84) 评论(0) 收藏 举报
浙公网安备 33010602011771号