当前位置: 首页 > article >正文

【CSDN Daily Practice】【二分】X的平方根

【CSDN Daily Practice】【二分】X的平方根

  • 官方思路:经典二分法,傻白甜地给了个最大值46340

class Solution {
    public int mySqrt(int x) {
        int left = 0, right = 46340;
        while (left < right) {
            int mid = (left + right) / 2;//建议使用left + (right-left)>>>1
            if (mid * mid < x)
                left = mid + 1;
            else if (mid * mid > x)
                if ((mid - 1) * (mid - 1) <= x) // 往小一值探测
                    return mid - 1;
                else
                    right = mid - 1;
            else
                return mid;
        }
        if (left * left > x)
            return left - 1;
        return left;
    }
}
  • 建议使用渐进二分法,不需要定义最大值
public int mySqrt2(int x) {
        int k = 0;
        int step = x/2;
        while (step >= 1) {
            while((k+step)*(k+step) <= x){
                k += step;//逼近
            }
            step /= 2; //砍半
        }
        return k ;
    }

http://www.kler.cn/a/106201.html

相关文章:

  • 无人机动力系统测试-实测数据与CFD模拟仿真数据关联对比分析
  • VMWare虚拟机安装华为欧拉系统
  • 工厂模式-简单工厂模式
  • 中信建投张青:以金融巨擘之姿,铸就公益慈善新篇章
  • 螺旋矩阵II(leetcode 59)
  • java小练习
  • docker基础镜像定制
  • 在 Visual Studio Code (VS Code) 中设置
  • 如何进行微服务测试?一文4个知识点带入门微服务测试!
  • redis 配置主从复制,哨兵模式案例
  • Spark SQL概述与基本操作
  • Linux CentOS 本地yum配置
  • 并查集(畅通工程)
  • 释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇--简洁版],支持Linux/Windows部署安装
  • 基于springboot小区团购管理系统
  • gitlab查看、修改用户和邮箱,gitlab生成密钥
  • 【Linux】 rpm安装包保存到本地并批量安装
  • 高级路由配置
  • eslint提示 xxx should be listed in the project's dependencies
  • 循环队列c语言版
  • 【uniapp】富文本
  • 棋盘格测距-单目相机(OpenCV/C++)
  • nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS
  • Miniconda、Vscode下载和conda源、pip源设置
  • RHCE8 资料整理(四)
  • 【机器学习可解释性】3.部分依赖图