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

04-算法打卡-数组-二分查找-leetcode(69)-第四天

1 题目地址

69. x 的平方根 - 力扣(LeetCode)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 - 1https://leetcode.cn/problems/sqrtx/description/

2 题目说明

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

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

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

示例 1:

输入:x = 4
输出:2

示例 2:

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

提示:

  • 0 <= x <= 231 - 1

3 解题思路

给定target值,计算出算术平方根;其次因为只保留整数部分就可以,所以能可以采用二分法,来找出这个数。
1、直觉上一个整数的平方根肯定不会超过它的一半,但是0和1除外(特殊处理)
2、算数平方根的范围肯定是在[1,target/2]
3、二分查找法:
        当middle^2>target,结果在左边,往左移,right=middle-1;
        当middle^2<target,结果在右边,往右移,left=middle+1;
        当middle^2=target,直接返回
        当不满足left<=right,跳出的时候表示right是最接近target的值

4 代码编写

4.1 二分查找

class Solution {
    public int mySqrt(int x) {
        if (x==0) {
            return 0;
        }
        if (x==1) {
            return 1;
        }

        int left = 1;
        int right = x / 2;

        while (left <= right) {
            int middle = (left + right) / 2;
            if ((long)middle * middle > x) { // 注意这块要加上(long)否则可能会因为溢出导致结果异常
                right = middle - 1; // 左移
            } else if ((long)middle * middle < x) {  // 注意这块要加上(long)否则可能会因为溢出导致结果异常
                left = middle + 1; // 右移
            } else {
                 return middle; // 相等则直接返回
            }
        }
        return right;
    }
}

相关文章:

  • 技术随笔《二》:人形机器人模仿学习与传统控制方法概述
  • 关于 Spring Boot 部署到 Docker 容器的详细说明,涵盖核心概念、配置步骤及关键命令,并附上表格总结
  • Python-控制语句
  • 热管理设计与 PCBA 长期可靠性的深度关联
  • 让DeepSeek API支持联网搜索
  • Lock 与 Synchronized:Java 并发控制的深度对比与实践
  • 什么是继承?js中有哪儿些继承?
  • 基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究
  • 1. CEF 下载及wrapper编译
  • 第四篇:Python文件操作与异常处理
  • PromptUp 网站介绍:AI助力,轻松创作
  • daz dForce 模拟后布料的变化不大,如何增强模拟的效果
  • 2025.04.12【生物信息学新工具】| SPADE:高效聚类与降维分析的利器
  • dify报错 Expecting value: line 1 column 1 (char 0)
  • 计算轴承|滚动轴承故障频率
  • 消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)
  • 26考研——数据的表示和运算_运算方法和运算电路_定点数的加减运算 定点数的乘除运算(2)
  • 什么是原型、原型链?
  • Linux网络编程——数据链路层详解,以太网、MAC地址、MTU、ARP、DNS、NAT、代理服务器......
  • 屏幕模块解析
  • 网站建设公司知乎/seo服务价格表
  • 安徽安庆网站建设公司/seo搜索引擎优化工具
  • 男给女做性按摩网站/搭建网站步骤
  • 收益网站制作/百度推广自己怎么做
  • 网站搭建是哪个岗位做的事儿/网络黄页推广软件哪个好
  • 做网站分什么软件/html网页设计模板