题目:

Implement int sqrt(int x).

Compute and return the square root of x.

代码:

class Solution {
public:
int mySqrt(int x)
{
if (x<) return x;
int l = ;
int r = x/;
while (l<=r)
{
int mid = (l+r)/;
if ( x / mid < mid )
{
r = mid - ;
}
else if ( x / mid > mid )
{
l = mid + ;
}
else
{
return mid;
}
}
return l-;
}
};

tips:

这个题一开始拿到感觉怪怪的,直接看的solution。

比如输入400,记录mid的结果如下:

100
50
25
12
18
21
19
20

这种虽然产生了震荡,但是震荡必然越来越小,而且每次变化的长度至少是上一次的一半,时间复杂度也确实是O(logn).

有个细节,如果没有整数的平方数,最后会推出循环;而退出循环时,一定是从l - r = 1,因此取l-1返回即可。

=====================================================

第一次过的时候有误区,binary search本来就是震荡的过程,第二次过按照第一次的代码写了一遍。

class Solution {
public:
int mySqrt(int x) {
if ( x< ) return x;
int l = ;
int r = x/;
while ( l<=r )
{
int mid = (l+r)/;
if ( x/mid == mid )
{
return mid;
}
else if ( x/mid > mid )
{
l = mid+;
}
else
{
r = mid-;
}
}
return l-;
}
};

最新文章

  1. java基础学习总结-接口
  2. slave IO流程之一:mysql登陆过程(mysql_real_connect)
  3. 让服务器iis支持.apk文件下载的设置方法
  4. .net版本发展历史
  5. matlab之meshgrid()函数
  6. javaee添加验证码
  7. Wireshark - 过滤规则
  8. cubietruck+ vncserver+source+wlan0 分类: cubieboard 2014-11-08 17:25 159人阅读 评论(0) 收藏
  9. Mybatis中javaType和jdbcType对应和CRUD例子
  10. css y轴溢出滚动条,x轴溢出显示
  11. window下maven的环境搭建
  12. Hbase学习03
  13. hdu 1276士兵队列问题【queue】
  14. mysql中建立索引的一些原则
  15. LVS基础知识
  16. html 之 padding,margin
  17. leetcode-algorithms-17 Letter Combinations of a Phone Number
  18. css实现图片横向排列滚动
  19. 【Eclipse】eclipse生成类图、类交互图、包依赖图
  20. 源码编译运行android emulator

热门文章

  1. 利用python进行简单的图片处理
  2. 微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery)
  3. pysnmp使用
  4. LeetCode Length of Last Word 最后一个字的长度
  5. C++,C++编程,Windows编程,MFC
  6. 在vue-cli中引入图片不能正常显示
  7. pat乙级1051
  8. IOS 隐式动画(非Root Layer)
  9. Java 发送 Http请求工具类
  10. CSVDE