描述

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
示例 4:

输入: nums = [1,3,5,6], target = 0
输出: 0
示例 5:

输入: nums = [1], target = 0
输出: 0

提示:

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为无重复元素的升序排列数组
-104 <= target <= 104

思路一:暴力解法

没有达到题目要求时间复杂度O(logn) 的要求
时间复杂度为:O(n)
空间复杂度为:O(1)

class Solution {public:int searchInsert(vector<int>& nums, int target) {int res=0;  //用来返回的结果for(int i=0;i<nums.size();i++){if(nums[i]==target){return i;}else if (nums[i]>target&&i!=nums.size()-1){if(i<nums.size()-1){return i;}else{return i+1;}}else if (i==nums.size()-1){if(nums[i]>target){return i;}else{return i+1;}}}return 0;}
};

思路二:二分查找法

class Solution {public:int searchInsert(vector<int>& nums, int target) {int res=0;  //用来返回的结果int left = 0;int right = nums.size()-1;  //定义target在[left,right]中while(left<=right){int mid = left +((right-left)/2);   //防止内存溢出,等价(left+right)/2if(nums[mid]<target){           //目标值在右区间中left = mid + 1;}else if (nums[mid]>target){    //目标在左区间中right = mid - 1; }else if (nums[mid]==target){   //当找到目标值return mid;} }//分别处理如下四种情况// 目标值在数组所有元素之前  [0, -1]// 目标值等于数组中某一个元素  return middle;// 目标值插入数组中的位置 [left, right],return  right + 1// 目标值在数组所有元素之后的情况 [left, right], return right + 1return right+1;}
};

LeetCode-数组-35. 搜索插入位置相关推荐

  1. 【LeetCode】35. 搜索插入位置---JavaScript解法

    [LeetCode]35. 搜索插入位置-JavaScript解法 原题链接:https://leetcode-cn.com/problems/search-insert-position/ /*** ...

  2. LeetCode Algorithm 35. 搜索插入位置

    35. 搜索插入位置 Ideas 题目中给的提示已经很清楚了,要求时间复杂度是O(log n),这不是指着鼻子跟我说:给老子用二分查找嘛! Code Python def searchInsert(s ...

  3. LeetCode 题 - 35. 搜索插入位置

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

  4. 【LeetCode】35. 搜索插入位置(C++实现)

    传送门:https://leetcode-cn.com/problems/search-insert-position/ 一.题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引. ...

  5. 力扣(LeetCode) 35. 搜索插入位置

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

  6. LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置

    前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...

  7. leetcode 35. 搜索插入位置(二分法搜索失败的情况)

    35. 搜索插入位置 思路:二分查找 模板: 如果查找成功,返回target在nums中的下标 //二分查找模板 //nums[0..n-1]为有序数组,target为目标 int left=0; i ...

  8. 力扣35. 搜索插入位置python实现

    35. 搜索插入位置 一.问题描述 二.算法思想   题目中的数组是排好序的,从头开始遍历,当发现列表中元素的值与target相等时返回该元素在列表中的位置i,否则继续查找,当发现列表中的元素比tar ...

  9. ARTS-23(35. 搜索插入位置,SELU激活函数,本周几个问题, 招商银行财报分析)

    Algorithm https://leetcode-cn.com/problems/search-insert-position/ 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目 ...

最新文章

  1. 4.1.1 网络层功能概述
  2. 程序员为什么要单身?
  3. sql 自动递增 在java_java基础 之 操作符
  4. mysql replace into用法详细说明
  5. 项目当中套一个自己的小库的方式问题记录
  6. baidumap vue 判断范围_懂一点前端—Vue快速入门
  7. 三星sec.android.soagent,3.0降级2.5教程
  8. 使用git和github进行协同开发流程
  9. 红外技术如何应用在 3D 电视
  10. 调用门、堆栈切换与调用过程返回
  11. 基于八叉树的区域增长点云分割算法
  12. video.h5.player.js视频播放器
  13. Java反编译工具XJad使用注意事项
  14. NOI题库答案(1.3 编程基础之算术表达式与顺序执行)
  15. Python 二分法求一元三次方程唯一的正实数根
  16. EI索引!海口举办!ICIG 2021喊你来投稿啦
  17. 简单秒表计时器的制作
  18. java自动化测试语言高级之网络编程
  19. CSDN如何导出为pdf文档?
  20. 程控交换原理教学,程控数字交换系统实验设备

热门文章

  1. [机器学习] Coursera ML笔记 - 神经网络(Representation)
  2. IDEA出现import org.junit.Test飘红解决方案
  3. linux跳出循环的三种方式,shell study-13day--跳出循环(break、continue)
  4. c c 语言程序设计同步,第一部分C语言程序设计C语言程序设计同步练习答案.PDF...
  5. lighttpd+fastcgi 返回500错误码_阿根廷著名电视减肥冠军去世 临终前体重达到500公斤...
  6. mysql中的dml操作_MySQL操作语言[DML]
  7. 湘潭计算机职业技术学校专业介绍,湘潭计算机职业技术学校介绍
  8. mysql的隔离级别_MySQL的四种事务隔离级别
  9. 小白重装系统教程_重装解决99%的电脑问题:小白U盘重装系统教程
  10. 计算机专业认识论文3000字,计算机专业论文范文3000字.doc