本文主要是介绍(LeetCode OJ) Sqrt(x),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:
http://oj.leetcode.com/problems/sqrtx/
看题目就知道是水题一枚,做这个平台的题目还是没有习惯,毕竟这里的题目都是以面试为目的的,所以Coding的时候一定要谨慎.
这里使用二分查找,二分虽然思路很简单,但是代码还是有几个地方值得注意的,
比如 mid = left + (right - left) / 2; 你是不是会使用 mid = (left + right) / 2;但是你有没有考虑过做加法有可能会溢出?而且跳出 while()循环的条件一定要仔细考虑,避免因为粗心而产生死循环。
附上我的代码:
class Solution {
public:int sqrt(int x) {if (0 == x) return 0;int left = 1, right = x, ans;while (left <= right) {int mid = left + (right - left) / 2;if (mid <= x / mid) {left = mid + 1;ans = mid;} else {right = mid - 1;}}return ans;}
};
这篇关于(LeetCode OJ) Sqrt(x)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!