算法入门19——二分查找算法——X的平方根

1.题目

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

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

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

示例 1:

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

示例 2:

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

提示:

  • 0 <= x <= 231 - 1

2.算法原理

cpp 复制代码
class Solution 
{
public:
    int mySqrt(int x) 
    {
        if(x < 1) return 0;
        int left = 1,right = x;

        while(left < right)
        {
            long long mid = left + (right-left+1)/2;
            if(mid*mid <= x)
            {
                left = mid;
            }
            else
            {
                right = mid-1;
            }
        }
        return left;
    }
};
相关推荐
Liu6288819 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
AI科技星19 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
参.商.19 小时前
【Day41】143. 重排链表
leetcode·golang
条tiao条20 小时前
KMP 算法详解:告别暴力匹配,让字符串匹配 “永不回头”
开发语言·算法
干啥啥不行,秃头第一名20 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
zzh9407720 小时前
Gemini 3.1 Pro 硬核推理优化剖析:思维织锦、动态计算与国内实测
算法
2301_8073671920 小时前
C++中的解释器模式变体
开发语言·c++·算法
愣头不青21 小时前
617.合并二叉树
java·算法
MIUMIUKK21 小时前
双指针三大例题
算法
灵感__idea21 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法