博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【 Sqrt(x) 】cpp
阅读量:7118 次
发布时间:2019-06-28

本文共 1500 字,大约阅读时间需要 5 分钟。

题目:

Implement int sqrt(int x).

Compute and return the square root of x.

代码:

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

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<2 ) return x;            int l = 1;            int r = x/2;            while ( l<=r )            {                int mid = (l+r)/2;                if ( x/mid == mid )                {                    return mid;                }                else if ( x/mid > mid )                {                    l = mid+1;                }                else                {                    r = mid-1;                }            }            return l-1;    }};

 

转载于:https://www.cnblogs.com/xbf9xbf/p/4538571.html

你可能感兴趣的文章
CUDNN v3特性
查看>>
为什么C# md5 32位加密算法,密码明文会出现31位
查看>>
怎么通过java去调用并执行shell脚本以及问题总结
查看>>
Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
查看>>
mysql分析函数的实现
查看>>
Android应用程序插件化研究之DexClassLoader
查看>>
如何站在双11的肩膀上 详解阿里云企业级互联网架构
查看>>
记一次Spring Batch完整入门实践
查看>>
小程序登录及用户信息和手机号的获取
查看>>
[Vue] Computed property "XXX" was assigned to but it has no setter.
查看>>
设计模式系列之「装饰模式」
查看>>
OSI 七层网络协议的定义与理解
查看>>
Less(v3.9.0)使用详解—变量
查看>>
Javascript对象
查看>>
Spring Boot快速注册服务脚本
查看>>
JavaScript嵌套函数this的指向问题
查看>>
Spring Cloud教程 (二)应用程序上下文服务层次结构
查看>>
git commit 规范校验配置和版本发布配置
查看>>
iOS下JS与OC互相调用(四)--JavaScriptCore
查看>>
4. 怎么在生活中提升专注力?
查看>>