69. Sqrt(x)
一、题目
1、审题
2、分析
实现 sqrt(X) 方法,返回的 n 要求是 n*n < x 的最大整数.
二、解答
1、思路:
方法一、
采用二分查找法,查找 n。
// Binary Search public int mySqrt2(int x) { if(x == 0) return 0; int left = 1, right = x / 2; while(true) { int mid = (left + right) / 2; if(mid > x / mid){ // 若用 mid * mid > x 判断,则存在 Integer 范围溢出问题。 right = mid - 1; } else { if((mid + 1) > x / (mid + 1)) { return mid; } left = mid + 1; } } }
方法二、采用 NewTon 迭代法
public int mySqrt(int x) { if(x == 1) return 1; long r = x / 2; while(r * r > x) r = (r + x/r) / 2; return (int) r; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步