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

你可以假设数组中无重复元素
示例 1:

输入: [1,3,5,6], 5
输出: 2
示例 2:

输入: [1,3,5,6], 2
输出: 1
示例 3:

输入: [1,3,5,6], 7
输出: 4
示例 4:

输入: [1,3,5,6], 0
输出: 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position

解答:

class Solution {public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length - 1;while(left <= right){int middle = left +((right - left)>>1);if (nums[middle] > target){right = middle - 1;}else if(nums[middle] < target){left = middle + 1;}else{return middle;}}return right+1;}
}仔细看上下两端其中的差别:
class Solution {public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length - 1;while(left <= right){int middle = left +((right - left)>>1);if (nums[middle] < target){left = middle + 1;}else if(nums[middle] > target){right = middle - 1;}else{return middle;}}return left ;}
}

还有一种暴力解法:

class Solution {public:int searchInsert(vector<int>& nums, int target) {for (int i = 0; i < nums.size(); i++) {// 分别处理如下三种情况// 目标值在数组所有元素之前// 目标值等于数组中某一个元素  // 目标值插入数组中的位置 if (nums[i] >= target) { // 一旦发现大于或者等于target的num[i],那么i就是我们要的结果return i;}}// 目标值在数组所有元素之后的情况 return nums.size(); // 如果target是最大的,或者 nums为空,则返回nums的长度}
};作者:carlsun-2
链接:https://leetcode-cn.com/problems/search-insert-position/solution/35sou-suo-cha-ru-wei-zhi-che-di-jiang-to-r77d/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数组|leetcode35.搜索插入位置相关推荐

  1. 3、leetcode35 搜索插入位置**

    leetcode 35 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) ...

  2. LeetCode35.搜索插入位置

    35.搜索插入位置 描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 示例 示例 1: 输入 ...

  3. 二分法——leetcode35. 搜索插入位置

    二分法的第一种写法 在左闭右闭的区间寻找target: 不变的量是:[left,right]; #include<bits/stdc++.h> using namespace std; i ...

  4. LeetCode--35. 搜索插入位置(遍历,二分法)

    搜索插入位置(C) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 遍历法 3.2 二分法 1. 题目描述 难度:简单 2. 题目分析 这道题目比较简单,比较容易想到的就是遍历法,其实更快的 ...

  5. #力扣 LeetCode35. 搜索插入位置 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC

    题目描述: 35. 搜索插入位置 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { //已有序:在数组中找到目标值,并返回其索引:如果 ...

  6. LeetCode-35 搜索插入位置

    题目描述: 思路想法: 无疑是利用二分查找了,但是,当一个不存在数组中的元素,应该如何确定它在数组中的位置呢? 二分法在跳出循环时,说明这个元素没有在数组当中,但是,在跳出来之前,left和right ...

  7. LeetCode35.搜索插入位置 JavaScript

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 示例 1: 输入: [1,3,5,6], 5 输 ...

  8. leetcode35. 搜索插入位置(二分搜索)

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 示例 1: 输入: [1,3,5,6], 5 输 ...

  9. LeetCode35. 搜索插入位置(二分查找)

    题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 思路 详见链接 代码 class So ...

最新文章

  1. FPGA篇(五)Capture导出FPGA引脚分配和端口定义
  2. Android屏幕尺寸适配注意事项
  3. 用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS
  4. C语言之常见错误解决办法
  5. linux下mysql设置关联_Linux下mysql安装与配置
  6. 石头剪刀布python代码_Python实现的石头剪子布代码分享
  7. svn怎么检出两个地址项目_svn 检出项目报错
  8. go语言 gosched
  9. Docker Win 10 安装
  10. 单点登录有关跨域的点
  11. 漫画 | 强化学习这都学不会的话,咳咳,你过来下!
  12. linux批量分区,Linux磁盘批量分区格式化和挂载脚本
  13. html元素标记不允许使用嵌套,第153天:关于HTML标签嵌套的问题详解
  14. 2019上半年软件设计师考试体会
  15. 中移物联网2018笔试题
  16. 蜜蜂CNN模糊进化深度学习算法
  17. 【树莓派】配置树莓派防火墙
  18. 《思维力:高效的系统思维》读书笔记02 - 深入理解系统化思维
  19. C#中利用正则表达式实现字符串搜索
  20. avi通过文件读写方式实现剪切、拼接(不经过解码、编码)

热门文章

  1. 走近分形与混沌(part9)--感性让人自然,理性让人智慧,理性和感性结合才能产生完美
  2. 《多元统计分析》学习笔记之主成分分析
  3. python与正则表达式(part7)--re模块使用
  4. java bufferedwriter 写入tab_Java基础-IO流
  5. 通过 url 参数 parameters 和 script tag 属性来配置 SAP UI5 运行时
  6. 一个关于Angular Directive selector里的中括号使用问题
  7. SAP Spartacus cxFocus Directive施加后导致tabindex为-1的副作用研究
  8. 什么是前端开发中的viewport
  9. 使用Javap分析Java代码里的static final的工作原理
  10. SAP CRM的WITH_INDOBJECTS搜索参数问题