【算法挨揍日记】day09——35. 搜索插入位置、69. x 的平方根

news2024/11/28 4:30:28

 35. 搜索插入位置

35. 搜索插入位置

题目描述:

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

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

 解题思路:

本题有两种可能:

  • 当t(target)在数组中,返回其下标
  • t不在数组中,返回它应该插入的位置的下标

可以将数组看成两个区。【数组<t】【数组>=t】

这就变成了找第二个数组【数组>=t】的第一个位置

也就变成了需要左端点的问题了

当循环结束后,left==right了,此时需要考虑边界问题,也就是nums【left】和t的关系,如果小于则返回left的下一个位置

 解题代码:

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left=0,right=nums.size()-1;
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(nums[mid]==target)return mid;
            if(nums[mid]<target)left=mid+1;
            if(nums[mid]>target)right=mid;
        }
        //此时left==right,考虑边界问题
        if(nums[left]<target)return left+1;
        return left;
    }
};

69. x 的平方根

69. x 的平方根

题目描述:

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

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

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

解题思路:

本题可以变成我们从0到x中找一个数mid,mid的平方最接近x,也可以等于x

将0-x数组分为两部分,一部分【0,mid】【mid+1,x】因此就变成找左区间的右端点了 

解题代码:

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

德国云安全协作软件提供商【Rencore】完成800万美元融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于德国慕尼黑的云安全协作软件提供商Rencore今日宣布已完成800万美元融资。 本轮融资由UVC Partners领投。 该公司打算利用这笔资金进一步投资于其云协作治理产品的增长。 Rencore由Matthi…

机器学习7:逻辑回归

一、说明 逻辑回归模型是处理分类问题的最常见机器学习模型之一。二项式逻辑回归只是逻辑回归模型的一种类型。它指的是两个变量的分类&#xff0c;其中概率用于确定二元结果&#xff0c;因此“二项式”中的“bi”。结果为真或假 — 0 或 1。 二项式逻辑回归的一个例子是预测人…

公众号留言小程序有哪些?要免费的

为什么公众号没有留言功能&#xff1f;2018年2月12日之后直到现在&#xff0c;新注册公众号的运营者会发现一个问题&#xff1a;无论是个人还是企业的公众号&#xff0c;在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验&#xff0c;少了一个这么重要的功能&…

掌握这些技巧,让Excel批量数据清洗变得简单高效!

什么是数据清洗 数据清洗是指在数据处理过程中对原始数据进行筛选、转换和修正&#xff0c;以确保数据的准确性、一致性和完整性的过程。它是数据预处理的一部分&#xff0c;旨在处理和纠正可能存在的错误、缺失值、异常值和不一致性等数据质量问题。 为什么要数据清洗 Exce…

南京大学【软件分析】07 Interprocedural Analysis

文章目录 1. Motivation2. Call graph Construction&#xff08;CHA&#xff09;2.1 方法分派Method Dispatch2.2 方法签名method signature2.3 案例&#xff1a;查找Dispatch2.4 CHA2.5 通过CHA构造调用图 3. Interprocedural Control-Flow Graph4. Interprocedural Data-Flow…

DBA数据库运维-MySQL安装篇(glibc,源码)

1. MySQL数据库版本 版本说明社区版: MySQL Community Edition (GPL)1.可以看做是企业版的“广泛体验版(小白鼠版)"&#xff0c;未经各个专有系统平台的压力和性能测试 2.基于GPL协议发布&#xff0c;可以随意下载使用 3.没有任何官方技术支持服务企业版:MySQL Enterpris…

经典循环神经网络(一)RNN及其在歌词数据集上的应用

经典循环神经网络(一)RNN及其在歌词数据集上的应用 1 RNN概述 在深度学习兴起之前&#xff0c;NLP领域一直是统计模型的天下&#xff0c;例如词对齐算法GIZA&#xff0c;统计机器翻译开源框架MOSES等等。在语言模型方向&#xff0c;n-gram是当时最为流行的语言模型方法。n-gr…

YoloV8改进策略:SPD-Conv加入到YoloV8中,让小目标无处遁形

摘要 SPD-Conv是一种新的构建块,用于替代现有的CNN体系结构中的步长卷积和池化层。它由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成。 空间到深度(SPD)层的作用是将输入特征图的每个空间维度降低到通道维度,同时保留通道内的信息。这可以通过将输入特征图的每…

关于日志系统

目录 日志落地类&#xff08;工厂模式&#xff09;双缓冲区异步处理器缓冲区异步工作器 日志器类同步日志器异步日志器构造日志器构造局部日志器构造全局日志器日志器管理器&#xff08;单例模式&#xff09; 日志宏&全局接口&#xff08;代理模式&#xff09; 源码&#x…

使用 cURL 发送 HTTP 请求: 深入探讨与示例

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Vue3之Suspense

<Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异步依赖项解析完成&#xff0c;并可以在等待时渲染一个加载状态。 我们可以看到官网并不推荐我们使用它&#xff0c;目前仍处于测试中。 他用于加…

【算法系列篇】哈希表

文章目录 前言1. 两数之和1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 判断是否为字符重排2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 存在重复元素3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 存在重复元素II4.2 题目要求4.2 做题思路4.3 Java代码实现 5. 字母异位词分…

Guitar Pro 8 .1全新功能介绍及2023官方特惠优惠券

《中国好声音》节目诞生10年多热度不减&#xff0c;每一季都有籍籍无名的学员成为万众瞩目的新星。怎么像他们一样把爱好变成事业&#xff1f;带着这个问题在不断的探寻中找到了答案&#xff0c;那就是要在有限的时间里比别人做效率更高的事。所谓“工欲善其事&#xff0c;必先…

超百家上市公司抛出回购、增持计划

9月以来&#xff0c;多家上市公司披露回购方案或增持计划&#xff0c;持续向市场传递积极信号&#xff0c;以真金白银提振市场信心。 Wind统计显示&#xff0c;截至9月28日&#xff0c;9月以来已有77家上市公司披露回购预案&#xff0c;其中多家公司发布超过亿元的回购计划。 …

WINDOWS与LINUX的文件文件共享

打开VMware: 点击虚拟机->点击设置 出来虚拟机设置&#xff0c;咱们点击选项->有个共享文件夹点击->选择总是启用->点击添加 下一步 此处选择一个windows下与虚拟机共享的一个目录 最后确定就ok了 那怎么在虚拟机Linux中访问共享文件呐 在文件的其他位置选择计…

SpringMVC如何处理表单提交与文件上传

SpringMVC处理表单提交与文件上传 SpringMVC是一个流行的Java框架&#xff0c;用于构建Web应用程序。它提供了强大的功能来处理表单提交和文件上传操作。本文将深入探讨SpringMVC如何处理这些常见的Web任务&#xff0c;以及如何使用示例代码来实现它们。 表单提交处理 表单提…

基于 SpringBoot+Vue 的企业人事管理系统

1 简介 本文讲解的是 Java基于 SpringBoot 的人事管理系统。本系统涉到的功能主要有&#xff1a;首页&#xff0c;个人中心&#xff0c;员工管理&#xff0c;部门管理&#xff0c;员工考勤管理&#xff0c;请假申请管理&#xff0c;加班申请管理&#xff0c;员工工资管理&…

cesium 鹰眼图2

cesium 鹰眼图2 1、实现方法 本文采用cesium 和 leaflet 来时实现,鹰眼采用leaflet来实现 2、示例代码 2.1 <!DOCTYPE html> <html><head><meta charset="utf-8">

【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…