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

69.x的平方根-力扣(LeetCode)

题目:

解题思路:

        解决本题主要运用的方法是二分法,二分法是一种在有序数组中查找某一特定元素的搜索算法。鉴于本题满足整个序列是有序的,并且可以通过比较来改变区间,满足二分法的应用条件,所以采用二分法。

        根据x是有符号整型数据,那么右区间可以确定为46341(根据x的最大值开方得到),在循环中不断进行比较和更新区间的操作,循环后,左边界的值即为目标元素,在整个过程中注意区间边界的赋值。

        一个注意点是:if(mid * mid == x)中,mid * mid产生的中间结果可能会超出int类型的范围,在LeetCode中提交会报错,所以要改为范围更大的long类型或者long long类型(在自己的编辑器中,可能不会报这个错误)。

代码:

int mySqrt(int x)
{
    int l = 0,r = 46341;//定义左右区间
    while(l < r)
    {
        long mid = l+(r-l)/2+1;//获取区间中点
        if(mid * mid == x)//找到目标元素
        {
            return mid;
        }
        else if(mid * mid > x)//目标元素在左区间
        {
            r = mid - 1;//更新区间
        }
        else//目标元素在右区间
        {
            l = mid;//更新区间
        }
    }
    //循环结束,此时l * l = x
    return l;
}

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

相关文章:

  • Elasticsearch面试内容整理-实践与应用场景
  • 五天SpringCloud计划——DAY1之mybatis-plus的使用
  • Statsmodels之OLS回归
  • [Unity]TileMap开发,TileMap地图缝隙问题
  • Argo workflow 拉取git 并使用pvc共享文件
  • Python学习------第十天
  • MySQL 8.4.3 Windows绿色安装与主从配置
  • canvas绘制圆角矩形
  • 修改一下达梦disql 提示符
  • OneToMany 和 ManyToOne
  • 使用数据库批量插入与循环单个插入:优势与区别
  • MyBatis的resultType和resultMap区别
  • 力扣 LeetCode 112. 路径总和(Day8:二叉树)
  • 失落的Apache JDBM(Java Database Management)
  • 【项目实战】基于 LLaMA-Factory 通过 LoRA 微调 Qwen2
  • 2024信创数据库TOP30之蚂蚁集团OceanBase
  • 最新智能AI问答运营系统(SparkAi)一站式AIGC系统,GPT-4.0/GPT-4o多模态模型+联网搜索提问+AI绘画+管理后台,用户会员套餐
  • Excel中批量替换字符大PK:Excel VS. Python
  • c ++零基础可视化——vector
  • WebSocket详解、WebSocket入门案例
  • React渲染流程与更新diff算法
  • AMD(Xilinx) FPGA配置Flash大小选择
  • Linux:权限相关知识详解
  • 基于yolov8、yolov5的茶叶等级检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • hhdb数据库介绍(9-26)
  • 当mysql的slave无法同步master数据时,如何基本不断业务重置主从同步关系