力扣每日一题69:x的平方根

题目描述:

给你一个非负整数 x ,计算并返回 x算术平方根

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意: 不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5

示例 1:

复制代码
输入:x = 4
输出:2

示例 2:

复制代码
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

提示:

  • 0 <= x <= 231 - 1

思路和题解:

在[1,x]内找一个满足k^2<=x的最大数。在一个升序的区间内查找,可以用二分法。

代码:

cpp 复制代码
class Solution {
public:
    int mySqrt(int x) {
        int l=0,r=x;
        int ans=1;
        while(l<=r)
        {
            int mid=(r+l)/2;
            // cout<<"l=="<<l<<"  mid=="<<mid<<"  r=="<<r<<endl;
            if((long long) mid*mid<=x)
            {
                ans=mid;
                l=mid+1;
            }
            else
            {
                r=mid-1;
            }
            // cout<<"l=="<<l<<"  mid=="<<mid<<"  r=="<<r<<endl;
        }
        return ans;
    }
};
相关推荐
算AI4 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
hyshhhh6 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
杉之7 小时前
选择排序笔记
java·算法·排序算法
Naive_77 小时前
蓝桥杯准备(前缀和差分)
java·职场和发展·蓝桥杯
烂蜻蜓7 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf7 小时前
图论----拓扑排序
算法·图论
我要昵称干什么7 小时前
基于S函数的simulink仿真
人工智能·算法
AndrewHZ8 小时前
【图像处理基石】什么是tone mapping?
图像处理·人工智能·算法·计算机视觉·hdr
念九_ysl8 小时前
基数排序算法解析与TypeScript实现
前端·算法·typescript·排序算法
守正出琦8 小时前
日期类的实现
数据结构·c++·算法