LeetCode刷题之x的平方根

今天一天没啥进展,vs从2019到2017,install、uninstall,前端害我,真的要碎啦。折腾坏了,决计不干啦。对着项目敲一敲算啦!刚刚跟同组的朋友聊了很久,本打算回宿舍,心想还是把题给做了。

1、题目描述

在这里插入图片描述

2、逻辑分析

很简单的一个二分法,在二分查找的每一步中,我们只需要比较中间元素 mid的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差,因此在得到最终的答案 result。

3、代码演示

public int mySqrt(int x) {
        int low = 0, high = x, result = -1;
        while(low <= high){
        // 计算中间值 mid,注意这里使用 low + (high - low)/2 而不是 (high + low)/2 是为了防止整数溢出 
            int mid = low + (high - low)/2;
            if((long) mid * mid <= x){
                result = mid;
                low = mid + 1;
            }else{
                high = mid - 1;
            }
        }
        return result;
    }

时间复杂度O(logX) ,空间复杂度:O(1)。

OK啦,晚安!下班咯,今天晚上去吃了贵州特色烤鱼,一顿顶两顿哈哈。明天继续嘿嘿,我是开心积极的小男孩!欧耶~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值