C++ 之LeetCode刷题记录(八)

😄😊😆😃😄😊😆😃

开始cpp刷题之旅,多学多练,尽力而为。

先易后难,先刷简单的。

在这里插入图片描述

35. 搜索插入位置

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

请必须使用时间复杂度为 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

解法:暴力法(O(n))

因为数组是有序数组,所以使用暴力法是很简单的。

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {     
        int res=0;   
        for(int i=0;i<nums.size();i++){
            if(target<= nums[i]){
                return i;
            }
        }
        return nums.size();
    }
};

提交记录如下所示:
在这里插入图片描述

暴力法都能击败这么多用户,估计不少老哥是使用暴力法之类的提交的。

😆😆😆😆

思路简单,代码简单,但是不符合题目O(log n) 的需求。

解法:二分查找法O(log n)

二分查找也很好理解,代码如下

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {        
        int left = 0;
        int right = nums.size() - 1;
        if (target <= nums[0]) {
            return 0;
        }
        if (target > nums[nums.size()-1]) {
            return nums.size();
        }
        int res=0;
        int middle = 0;
        while (right >left) {
            int length = right - left;
            middle = length % 2 == 0 ? length / 2 : (length + 1) / 2;
            middle += left;
            if (right - left <= 1) {
                res = right;
                break;           
            }
            else if (target > nums[middle]) {
                left = middle;
            }
            else if(target <= nums[middle]){
                right = middle;
            }
        }
        return res;
    }
};

提交记录如下所示:

在这里插入图片描述

思路:设置左右两个指针,将target值与中间值作比较,小于中间值说明靠近左边,就把右指针指向中间位置。否则就靠近右边,把左指针指向中间值。这样每次可以缩小一半的查找范围。

在数据量大的时候,会比循环查找快很多。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Github

文章目录 Github 的作用基本概念创建仓库以及相关介绍创建文件、查看文件信息、编辑程序上传文件搜索文件下载/检出文件 Github 的作用 项目代码托管平台 基本概念 Repository 仓库&#xff0c;用于存放项目代码 *Star 收藏项目&#xff0c;方便下次查看&#xff08;有一百个st…

SpringBoot内嵌Tomcat启动流程

前言 Spring MVC 让开发者不用了解 Servlet 细节&#xff0c;专注于 Controller 编写 API 接口。Spring Boot 更是采用约定大于配置的设计思想&#xff0c;通过内嵌 Tomcat 的方式让开发者可以快速构建并部署一个 Web 应用。怎么做到的呢&#xff1f; Tomcat启动方式 早期的…

Java 数据结构篇-实现 AVL 树的核心方法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 AVL 树的说明 2.0 AVL 树的成员变量及其构造方法 3.0 实现 AVL 树的核心方法 3.1 获取当前节点的高度 height(AVLNode node) 3.2 更新当前节点的高度 updateHeig…

软件安全测评需要关注哪些?湖南CMA、CNAS软件测试公司推荐

在当今信息化的社会&#xff0c;软件安全问题日益凸显&#xff0c;给个人和企业的数据安全造成了极大的威胁。为了保障软件的安全性&#xff0c;软件安全测评应运而生。 软件安全测评是通过对软件系统的评估&#xff0c;发现其中存在的安全漏洞和风险&#xff0c;为软件的开发…

大模型 RAG 问答技术架构及核心模块盘点:从 Embedding、prompt-embedding 到 Reranker

对于RAG而言&#xff0c;2023年已经出现了很多工作&#xff0c;草台班子有了一堆&#xff0c;架构也初步走通&#xff0c;2024年应该会围绕搜索增强做更多的优化工作。 因此我们今天来系统回顾下RAG中的模块&#xff0c;包括一些架构&#xff0c;文本嵌入embedding等&#xff…

MATLAB根据数据拟合曲线

MATLAB根据数据拟合曲线 MATLAB根据数据拟合曲线视频观看 MATLAB根据数据拟合曲线 x1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,6…

深入浅出Android dmabuf_dump工具

dmabuf是什么&#xff1f; 可以参考我之前写的一篇文章&#xff0c;在这篇文章中有介绍dma_buf&#xff1a;BufferManager_驱动的buffermanager-CSDN博客 dmabuf_dump工具介绍(基于Android 14) dmabuf_dump是一个可执行文件&#xff0c;接收参数调用libdmabufinfo.a的接口完成…

C#,入门教程(15)——类(class)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(14)——字符串与其他数据类型的转换https://blog.csdn.net/beijinghorn/article/details/124004562 物以类聚&#xff0c;凡物必类。 类的使用&#xff0c;须遵循几个简单的原则&#xff1a; &#xff08;1&#xff09;能类则类&a…

宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新

来源&#xff1a;宏集科技 工业物联网 宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新 原文链接&#xff1a;https://mp.weixin.qq.com/s/DwzVzifUiidNr-FT3Zfzpg 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 01 前言 近年来&#xff0c;中国食品行业…

想进入游戏开发领域,应该先学习C++编程还是C#编程?

想进入游戏开发领域&#xff0c;应该先学习C编程还是C#编程&#xff1f; 当你决心踏入游戏开发者的行列时&#xff0c;最先迎接你的将是引擎的选择。引擎是游戏的心脏&#xff0c;所有精彩的画面和内容都是脉脉游戏血液从引擎中流淌而出。Unity、Unreal Engine、Cocos等引擎盛…

牛客字符串

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

存储卷(数据卷)—主要是nfs方式挂载

1、定义 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的&#xff0c;一旦容器被删除&#xff0c;数据会丢失。k8s基于控制器创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态会恢复到原始状态。一旦回到原始状态&#xff0c;后天编辑的文件…

二叉树的层序遍历(C++详解)

文章目录 写在前面解题思路具体做法 写在前面 本篇文章使用C实现了二叉树的层序遍历。在实现二叉树层序遍历时&#xff0c;一般情况下&#xff0c;大家可能直接输出遍历结果。然而&#xff0c;在解决在线评测&#xff08;OJ&#xff09;问题时&#xff0c;有时要求将每一层的遍…

这7个设计素材网站太好用了,特别是第一款!

网页设计师在使用网页设计素材时&#xff0c;会优先考虑那些免费优质的网页设计素材网站。找到一个免费优质的网页设计素材网站并不容易。有些网站要么需要开设材料网站的会员&#xff0c;要么设计素材质量差。即时设计整理总结了 7 个免费的网页设计素材网站&#xff0c;对 “…

GENMARK控制器维修SMALL SMC4092

晶圆转移机器人SMALL CONTROLLER控制器维修 SMC1100 半导体设备机械臂GENMARK控制器维修 eSensor特点&#xff1a; &#xff08;1&#xff09;基于DNA杂交和电化学检测原理&#xff1b; &#xff08;2&#xff09;电化学传感检测&#xff0c;并非荧光或光学检测。 电子信号的…

中国光伏展

中国光伏展是中国最大的光伏产业展览会&#xff0c;每年在国内举办一次。该展览会汇集了国内外光伏行业的领先企业和专业人士&#xff0c;展示最新的光伏技术、产品和解决方案。 中国光伏展旨在促进光伏行业的发展和创新&#xff0c;提升光伏产业的国际竞争力。展览会涵盖了光伏…

一、Sharding-JDBC系列01:整合SpringBoot实现分库分表,读写分离

目录 一、概述 二、案例演示-水平分表 (1)、创建springboot工程 (2)、创建数据库和数据表 (3)、application.yaml配置分片规则 (4)、测试数据插入、查询操作 4.1、插入-控制台SQL日志 4.2、查询-控制台SQL日志 三、案例演示-水平分库 (1)、创建数据库和数据表 (2…

React07-路由管理器react-router-dom(v6)

react-router 是一个流行的用于 React 应用程序路由的库。它使我们能够轻松定义应用程序的路由&#xff0c;并将它们映射到特定的组件&#xff0c;这样可以很容易地创建复杂的单页面应用&#xff0c;并管理应用程序的不同视图。 react-router 是基于 React 构建的&#xff0c;…

离线安装telnet-server

telnet下载地址&#xff1a; https://vault.centos.org/ 需要下载telnet 和 telnet-server 确认自己的服务器版本&#xff0c;我这里使用的是&#xff08;Red Hat Enterprise Linux Server release 7.0 (Maipo)&#xff09;对应的是Centos 7.0,所有到 https://vault.centos.or…

平面光波导_三层均匀平面光波导_射线分析法

平面光波导_三层均匀平面光波导_射线分析法 三层均匀平面光波导&#xff1a; 折射率沿 x x x 方向有变化&#xff0c;沿 y y y、 z z z 方向没有变化三层&#xff1a;芯区( n 1 n_1 n1​) > > > 衬底( n 2 n_2 n2​) ≥ \geq ≥ 包层( n 3 n_3 n3​)包层通常为空…