LeetCode35. 搜索插入位置(二分法入门)

news2024/11/25 2:27:17

写在前面:

题目链接:LeetCode35. 搜索插入位置
编程语言:C++
题目难度:简单

一、题目描述

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

请必须使用时间复杂度为 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 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为 无重复元素 的 升序 排列数组
-104 <= target <= 104

二、题目分析&解题思路&代码实现

注意题目中所说要求:请必须使用时间复杂度为 O(log n) 的算法。且 nums 为 无重复元素 的 升序 排列数组
如果对二分法还不了解的可以看下面的示例:
例如我们需要查找的数字是 5
在这里插入图片描述
二分法的思想就是,既然是升序的数组,那么这个需要查找的目标数字一定在这个数组的左区间或者右区间,当然了如果是无序的话,那么二分法将没有任何意义,而我们需要做的就是不断去缩小左右区间
示例:
在这里插入图片描述
两次就找到了,最坏情况下 3 次也就找到了,因为 2^2 <= 6 <= 2^3 因此这是一个标准的时间复杂度为 O(log n) 的算法。
代码示例:

    int searchInsert(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size()-1;
        int iResult = nums.size();//找不到比他小的数说明在最后元素的后一个位置
        while(left <= right)
        {
            int mid = (left+right)/2;
            if(nums[mid] >= target)//目标数字在左区间
            {
                iResult = mid;
                right = mid -1;//缩小右边界
            }
            else//目标数字在区间
            {
                left = mid+1;//缩小左边界
            }

        }
        return iResult;

运行结果:
在这里插入图片描述

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

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

相关文章

Linkage Mapper:从栖息地连通性到物种保护的连通性指南针

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言一、Linkage Mapper工具包简介1.1 什么是Linkage Mapper工具包⭐️ Linkage Mapper工具包的概述

Vite4 + Vue3 项目打包并发布Nginx服务器 (前端必看)

一、环境 &#x1f604; &#x1f604; &#x1f604; 这里因为我们有的小伙伴可能不太需要服务器&#xff0c;单纯学习的话也没有必要去买一个服务器。如果需要把自己的东西部署到公网上&#xff0c;有很多方式&#xff0c;自行百度。你也可以购买阿里云或者腾讯云。逻辑都是…

MSQL系列(二) Mysql实战-索引结构B+Tree

Mysql实战-索引结构 BTree 上一篇 我们讲解了二叉树&#xff0c;平衡二叉树&#xff0c;红黑树&#xff0c;BTree的结构及特点&#xff0c;本文我们着重讲解一下BTree&#xff0c;为什么Mysql的存储结构采用BTree而不是上面的那几种 1.BTree的缺点 我们用上篇文章中的BTree的…

第四十二天学习记录:C语言进阶:笔试题整理Ⅲ

问&#xff1a;解释一下int(*a[20])(int)是什么&#xff1f; ChatAI答&#xff1a; int (*a[20])(int) 是一个数组&#xff0c;该数组中每个元素都是一个指向函数的指针&#xff0c;该函数具有一个int类型的参数&#xff0c;并返回一个int类型的值。 具体来说&#xff0c;a是一…

宝塔服务器(linux)服务器搭建

搭建服务器 nginx 搭配 PM2( 集合了node的功能 ) 搭建服务器 域名: http://kissface.top 流程如下: 服务器既做assets文件目录挂载 , 也当做nodejs服务使用 当我访问http://kissface.top 根目录时 展示index.html文件 同时能访问静态资源如 js/css/img/font 等 当我访问 http…

Linux:初识【VI / VIM编辑器】

Linux系统版本&#xff1a;centos 7.5 x64位 VMware版本&#xff1a; VMware Workstation Pro 16 文章目录 一、VI / VIM是什么&#xff1f;1.1 VI编辑器1.2 VIM编辑器 二、为什么要使用VI / VIM编辑器&#xff1f;三、如何使用VI / VIM编辑器&#xff1f;3.1 一般模式3.2 编辑…

keil MDK5插件推荐——Astyle代码格式化插件

前言 代码格式化是提高代码质量和可读性的重要手段之一。然而&#xff0c;在Keil MDK5中并没有内置代码格式化工具&#xff0c;因此需要寻找第三方工具来解决这个问题。开源的代码格式化工具Astyle能以插件的形式集成到Keil中以满足我们对代码格式化的需求。 本文将详细介绍如…

《永恒之塔sf私服》“龙战前传”里的更高挑战-

关于这个新版本的各种更新内容已经屡见不新&#xff0c;无论是最新关注的玩家&#xff0c;抑或是一直坚守在永恒之塔阵地的老玩家们&#xff0c;相信已经对各种感兴趣的更新倒背如流。这里就不再重复。 每一款MMO游戏升级&#xff0c;伴随着玩家技术和战术的长进&#xff0c;游…

【Unity-UGUI控件全面解析】| ScrollView 滚动视图组件详解

🎬【Unity-UGUI控件全面解析】| ScrollView 滚动视图组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习…

火线、零线和地线及开关接线参考

火线、零线和地线及开关接线参考 1. 火线、零线和地线 1.1. What is Live wire? Live wire&#xff0c;L&#xff1a;火线&#xff0c;相线火线是电路中输送电的电源线。 1.2. What is Neutral wire? Neutral wire&#xff0c;N&#xff1a;零线零线是由发电机或变压器二…

AD 实现多 DC + 多 ADFS 高可用部署

总览 在本篇文章中, 我将记录部署多 DC 多 ADFS 实现高可用方案的详细步骤, 期间我会尽量使用 PowerShell 来实现相应的动作, 实在找不到命令或者 GUI 更方便的再附截图. 主要步骤分为: 部署 2 台 DC 服务器提供 AD 服务 (AD域名 alian.com)安装 ADCS 角色为 ADFS 提供证书服…

NodeJs模块化之下半部分

Node.js 中的模块化 更多精彩内容&#xff0c;请微信搜索“前端爱好者“&#xff0c; 戳我 查看 。 官网地址&#xff1a;https://nodejs.cn/api/ fs 文件系统 地址&#xff1a;https://nodejs.cn/api/fs.html#%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F node:fs 模块能够以标准…

GPT-3 面试题

简介 1、GPT-3 是什么&#xff1f;它是基于什么模型的&#xff1f; GPT-3是一种基于深度学习原理的语言预测模型。它是由OpenAI开发的&#xff0c;可以从互联网数据中生成任何类型的文本。它只需要一小段文本作为输入&#xff0c;就可以生成大量的准确和复杂的机器生成文本⁴…

Akura Medica:新型静脉血栓切除系统,完成首次人体试验

Akura Medical公司宣布&#xff0c;其机械血栓切除平台在人体首次使用成功&#xff0c;这是一项具有突破性的技术&#xff0c;可以有效地治疗肺栓塞、深静脉血栓等血栓栓塞疾病。该平台使用了一种与众不同的方法&#xff0c;可以高效地清除血管内的血栓&#xff0c;同时保护血管…

测试分词工具Lucene.Net.Analysis.PanGu(盘古分词)

从微信公众号及百度文章来看&#xff0c;全文检索的前置工作是分词&#xff0c;首先将要做全文检索的内容分词&#xff0c;然后采用全文检索模块或工具进行全文检索。参考文献4介绍了基于Lucene.net实现全文检索的大致思路&#xff0c;其采用的是Lucene.net盘古分词的方式实现。…

蓝桥:前端开发笔面必刷题——Day1 数组(一)

文章目录 &#x1f4cb;前言&#x1f3af;数组中重复的数字&#x1f4da;题目内容✅解答 &#x1f3af;两数之和&#x1f4da;题目内容✅解答 &#x1f3af;替换空格&#x1f4da;题目内容✅解答 &#x1f3af;二维数组中的查找&#x1f4da;题目内容✅解答 &#x1f4dd;最后 …

C语言-程序环境与预处理

程序环境与预处理 程序环境翻译环境&#xff08;编译链接&#xff09;预编译编译汇编链接 执行环境 预处理预定义符#define定义的标识符 宏#define定义宏#define替换规则宏的命名约定带副作用的宏参数宏和函数的比较 其它#和##的使用字符串常量化运算符#标记粘贴运算符## 命令行…

fastled教程

文章目录 EVERY_N_MILLISECONDS(10)EVERY_N_SECONDS(5)fill_solid(leds, NUM_LEDS, CRGB::Red);fill_gradient_RGBfill_rainbow(leds, NUM_LEDS, i, 255 / NUM_LEDS);效果1fadeToBlackBy(leds, NUM_LEDS, 1); 效果2FastLED.setBrightness(2*i);// 效果3leds[i] CHSV(hue (i *…

scanf和scanf_s的区别、解决VS返回值被忽略的报错问题

一、scanf和scanf_s是什么&#xff1f; scanf()不会检查输入边界&#xff0c;可能造成数据溢出。 scanf_s()会进行边界检查。 二、分别分析 1.scanf scanf表示从键盘输入指定格式的数据。如&#xff1a;scanf("%d",x);指从键盘给x输入一个int型&#xff08;整型&…

【计网】【TCP】浅析TCP三次握手

前言 之前学习计网时不认真&#xff0c;TCP三次握手稀里糊涂就过去了&#xff0c;最近在重新查漏补缺计网这方面的知识&#xff0c;饭要一口一口吃&#xff0c;我就没有把其中涉及到的大量知识点写在此博客中&#xff0c;此文仅管中窥豹&#xff0c;之后再详细写吧。 笔记中有…