[LeetCode-35]-Search Insert Position(搜索整数所在的位置)

2023-11-16

题目相关

【题目解读】
从有序整数列表中搜索给定整数,如果在其中返回下标位置,如果不在,返回应该在的位置。

【题目】原题链接
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Example 1:
Input: [1,3,5,6], 5
Output: 2

Example 2:
Input: [1,3,5,6], 2
Output: 1

Example 3:
Input: [1,3,5,6], 7
Output: 4

Example 4:
Input: [1,3,5,6], 0
Output: 0

【难度】Easy

Solution

该题是一个典型的查找问题,可以采用从前到后顺序遍历的方法,也可以采用经典的二分查找算,下面是使用这两种方法的对应代码。

1. 顺序遍历

C++程序中数据存在在vector中,所以可以直接使用下标进行访问。

int searchInsert(vector<int>& nums, int target) {
   int i = 0;
   while(i < nums.size())
   {
       if (target <= nums[i]) break;
       i ++;
   }
   return i;
}

最开始写出该方法后,不相信这么简单,自己想了好几个测试用例,没问题才提交的,通过了,不过效率不高,运行结果如下。

123

2. 算法改进 – 二分查找

vector可以使用下标操作,同时是有序的,所以可以方便的使用二分查找算法进行查找。

二分查找算法太经典和常用,应熟稔于心。

int searchInsert(vector<int>& nums, int target)
{
      int low = 0;
      int high = nums.size() - 1;

      while(low <= high) //这里的判断条件需要注意
      { 
          int mid = (low + high)/2;

          if(target < nums[mid]) high = mid -1;
          else if(target > nums[mid]) low = mid + 1;
          else return mid;
      }
      return low;
}

上面的算法中,几个判断的地方需要注意下,while中的应该是 low <= high, if判断中举出一个例子就能清楚的看到是咋回事请。

该算法的提交结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[LeetCode-35]-Search Insert Position(搜索整数所在的位置) 的相关文章

随机推荐

  • 实现Vue的登录页面

    实现Vue的登录页面步骤 1 前期准备 1 1 安装Node js 从官网下载地址 https nodejs org zh cn 安装完成后 在终端输入 node v 来查询版本号 1 2 安装Webpack 在终端输入npm instal
  • 测试servlet的小tips

    由于servlet中使用了一些Request请求中的参数 我们可以通过请求url中添加这些参数 传入到 Request中 一个小tips
  • GTest的测试环境搭建

    一 gtest的安装 Google test是一种比较方便的C 测试框架 它能够帮助我们比较方便的进行测试代码的编写 以及输出尽可能详细的失败信息 能够大大缩短我们测试代码的编写效率 而且该框架的使用方法也比较简单 能够降低我们学习新框架的
  • Java 移除重复节点

    移除重复节点 难度简单97 编写代码 移除未排序链表中的重复节点 保留最开始出现的节点 示例1 输入 1 2 3 3 2 1 输出 1 2 3 示例2 输入 1 1 1 1 2 输出 1 2 提示 链表长度在 0 20000 范围内 链表元
  • MES管理系统对电子企业来说有什么优点

    引言 在电子制造企业中 MES管理系统已经成为提高生产效率 降低成本 提高订单履行速度和准确性的重要工具 电子企业MES管理系统是一套集成的信息系统 用于监控和控制电子企业的生产过程 本文将探讨MES管理系统对于电子企业来说有哪些优点 一
  • 人工智能的最新进展:2024年将会发生什么?

    文章目录 2024年AI最新发展 2024年AI具体应用 2024年AI的具体预测 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能 AI 是一种快速发展的技术
  • C++ MAP的遍历顺序和插入元素顺序是不同的

    当你为MAP插入一个元素后 MAP会按KEY的顺序重新排列 所以当你遍历MAP的时候 遍历的顺序已经不是你插入元素的顺序 举个具体例子 MAP B 1 MAP C 2 MAP A 3 当你遍历MAP输出的时候 是按 A B C 顺序输出的
  • Zookeeper和Nacos的区别

    目录 Zookeeper 1 ZK结构 2 ZK的消息广播和崩溃恢复 Nacos 1 存储和数据更新 2 注册中心 Zookeeper 1 ZK结构 Zookeeper的功能主要是通过它的树形节点来实现的 当有节点数据变化时或者说节点过期的
  • Dropout Learning - 防止深度神经网络过拟合

    最近在学习caffe 里面有一个名词叫做Dropout Learning 一直没明白是什么意思 直到最近才发现一片文章介绍Dropout Learning的 希望可以给不知道的同学一定的帮助 如果想要更深入的了解可以阅读该文献 文章结尾会给
  • MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

    mov指令原则 两个操作数 目标操作数和源操作数 的大小必须相同 两个操作数不能同时为内存操作数 也就是不能内存 到 内存 指令指针寄存器不能作为目标操作数 64位汇编程序下 32位汇编程序和64位汇编程序都依照上面的规则 语法也相同 但如
  • 目标跟踪算法

    目标跟踪算法 一 目标跟踪算法简介 1 1 主要任务 1 1 1 Online Visual Tracker BenchMark 1 1 2 VOT 1 2 难点与挑战 1 3 分类 1 3 1 常规分类 1 3 2 时间分类 二 常用算法
  • 从Bengio的NPS模型看AGI的实现通路

    来源 混沌巡洋舰 这两天深度学习祖师Yoshua Bengio 的 Neural Production System 刷新了AI圈子 与以往的深度学习套路不同的是 这篇文章有效的把符号主义AI对人类认知的模拟与深度学习结合 得到了一个能够学
  • 《每日一题》NO.21:画出CMOS 非门/与非门/或非门的结构

    芯司机 每日一题 会每天更新一道IC面试笔试题 其中有些题目已经被很多企业参考采用了哦 聪明的你快来挑战一下吧 今天是第21题 CMOS Complementary Metal Oxide Semiconductor 互补金属氧化物半导体
  • Vivo 2019秋季校园招聘笔试题(9月22号机考)

    Vivo笔试题这次真是出乎意料了 上来就直接三道编程题奉上 题目描述 1 小V在公司负责游戏运营 今天收到一款申请新上架的游戏 跳一跳 为了确保提供给广大玩家朋友们的游戏都是高品质的 按照运营流程小V必须对新游戏进行全方位了解体验和评估 这
  • webpack多个Html,Webpack构建多页面应用配置

    安装依赖 devDependencies babel core 7 12 3 babel preset env 7 12 1 babel preset react 7 12 1 babel loader 8 1 0 clean webpac
  • 一元多项式的相加

    一元多项式的表达和相加 使用单链表表示一元多项式 由于使用java语言自己编写实现 没有使用LinkedList集合实现 所以需要创建单链表的类 类中包含指数 系数和后继元素的地址 类的设计如下 public class SingleLis
  • 01背包问题(采药) 动态规划,python实现

    采药问题 题目描述 辰辰是个天资聪颖的孩子 他的梦想是成为世界上最伟大的医师 为此 他想拜附近最有威望的医师为师 医师为了判断他的资质 给他出了一个难题 医师把他带到一个到处都是草药的山洞里对他说 孩子 这个山洞里有一些不同的草药 采每一株
  • python后端接口框架Flask的基本用法

    简介 在现代Web开发中 后端接口是十分重要的一部分 它们建立了前端和后端之间的连接 使得数据能够在两者之间传递 Python是一门受欢迎的动态编程语言 它可以用来编写高效且功能强大的后端接口 本文将介绍如何使用Python编写后端接口 以
  • WSS 代码执行的权限提升

    WSS 代码执行的权限提升 概述 WSS 默认使用身份模拟执行代码 也就是说用当前登录的用户身份执行Web Part或者自定义应用程序的代码访问 在大多数情况下 这种机制能够准确并严格地控制了标准权限的用户他对特定网站资源和敏感数据的访问
  • [LeetCode-35]-Search Insert Position(搜索整数所在的位置)

    文章目录 题目相关 Solution 1 顺序遍历 2 算法改进 二分查找 题目相关 题目解读 从有序整数列表中搜索给定整数 如果在其中返回下标位置 如果不在 返回应该在的位置 题目 原题链接 Given a sorted array an