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

二分搜索(三)x的平方根

69. x 的平方根 

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

 暴力

从1开始依次遍历,当i平方刚好大于或等于目标值时返回

class Solution {
public:
    int mySqrt(int x) {
        for(long long i = 1; i <= x; i++)
        {
            if(i * i == x)
                return (int)i;
            else if(i * i > x)
                return (int)i-1;
        }
        return 0;
    }
};

二分优化

 结果只会出现在小于mid平方位置,所以在 <= 目标值进行更新ret即可

class Solution {
public:
    int mySqrt(int x) {
        int left = 0, right = x, ret = -1;
        while(left <= right)
        {
            int mid = left + (right - left)/2;
            if((long long) mid * mid <= x)
            {
                ret = mid;
                left = mid + 1;
            }
            else
                right = mid - 1;
        }
        return ret;
    }
};


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

相关文章:

  • JavaScript中的 closest 方法详解
  • Java虚拟机(JVM)中的元空间(Metaspace)一些关键点的总结
  • Marvell第四季度营收预计超预期,定制芯片需求激增
  • 图解SSL/TLS 建立加密通道的过程
  • vue2+cesium初始化地图
  • Apache storm安装教程(单机版)
  • Midjourney Imagine API 申请及使用
  • Vue2-从零搭建一个项目(项目基本结构介绍)
  • 智能运维视角下的网络设备监测与数据分析
  • Flutter中的Future和Stream
  • Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)
  • 【论文精读】Revisiting Adversarial Training under Long-Tailed Distributions
  • 组合问题变式——选数(dfs)
  • 【Linux探索学习】第十七弹——进程终止:深入解析操作系统中的进程终止机制
  • MySQL 学习 之 数值计算精度问题
  • 硬件看门狗工作原理
  • Zookeeper的通知机制是什么?
  • R语言中的数据读写
  • vscode ctrl+/注释不了css
  • Flink随笔 20241203 Flink重点内容
  • 使用matplotlib 库绘制曲线图~
  • HarmonyOS URL字符串解析 常用的几个方法
  • 用Python做数据分析环境搭建及工具使用(Jupyter)
  • SpringSecurity6
  • 【零基础学习UDS诊断测试】——0x10测试用例设计
  • 论文阅读:Deep Multi-View Subspace Clustering with Anchor Graph