LeetCode-数组-35. 搜索插入位置
描述
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. 搜索插入位置相关推荐
- 【LeetCode】35. 搜索插入位置---JavaScript解法
[LeetCode]35. 搜索插入位置-JavaScript解法 原题链接:https://leetcode-cn.com/problems/search-insert-position/ /*** ...
- LeetCode Algorithm 35. 搜索插入位置
35. 搜索插入位置 Ideas 题目中给的提示已经很清楚了,要求时间复杂度是O(log n),这不是指着鼻子跟我说:给老子用二分查找嘛! Code Python def searchInsert(s ...
- LeetCode 题 - 35. 搜索插入位置
搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 示例 1: 输入: [1,3,5, ...
- 【LeetCode】35. 搜索插入位置(C++实现)
传送门:https://leetcode-cn.com/problems/search-insert-position/ 一.题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引. ...
- 力扣(LeetCode) 35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 示例 1: 输入: [1,3,5,6], 5 输 ...
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...
- leetcode 35. 搜索插入位置(二分法搜索失败的情况)
35. 搜索插入位置 思路:二分查找 模板: 如果查找成功,返回target在nums中的下标 //二分查找模板 //nums[0..n-1]为有序数组,target为目标 int left=0; i ...
- 力扣35. 搜索插入位置python实现
35. 搜索插入位置 一.问题描述 二.算法思想 题目中的数组是排好序的,从头开始遍历,当发现列表中元素的值与target相等时返回该元素在列表中的位置i,否则继续查找,当发现列表中的元素比tar ...
- ARTS-23(35. 搜索插入位置,SELU激活函数,本周几个问题, 招商银行财报分析)
Algorithm https://leetcode-cn.com/problems/search-insert-position/ 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目 ...
最新文章
- 4.1.1 网络层功能概述
- 程序员为什么要单身?
- sql 自动递增 在java_java基础 之 操作符
- mysql replace into用法详细说明
- 项目当中套一个自己的小库的方式问题记录
- baidumap vue 判断范围_懂一点前端—Vue快速入门
- 三星sec.android.soagent,3.0降级2.5教程
- 使用git和github进行协同开发流程
- 红外技术如何应用在 3D 电视
- 调用门、堆栈切换与调用过程返回
- 基于八叉树的区域增长点云分割算法
- video.h5.player.js视频播放器
- Java反编译工具XJad使用注意事项
- NOI题库答案(1.3 编程基础之算术表达式与顺序执行)
- Python 二分法求一元三次方程唯一的正实数根
- EI索引!海口举办!ICIG 2021喊你来投稿啦
- 简单秒表计时器的制作
- java自动化测试语言高级之网络编程
- CSDN如何导出为pdf文档?
- 程控交换原理教学,程控数字交换系统实验设备
热门文章
- [机器学习] Coursera ML笔记 - 神经网络(Representation)
- IDEA出现import org.junit.Test飘红解决方案
- linux跳出循环的三种方式,shell study-13day--跳出循环(break、continue)
- c c 语言程序设计同步,第一部分C语言程序设计C语言程序设计同步练习答案.PDF...
- lighttpd+fastcgi 返回500错误码_阿根廷著名电视减肥冠军去世 临终前体重达到500公斤...
- mysql中的dml操作_MySQL操作语言[DML]
- 湘潭计算机职业技术学校专业介绍,湘潭计算机职业技术学校介绍
- mysql的隔离级别_MySQL的四种事务隔离级别
- 小白重装系统教程_重装解决99%的电脑问题:小白U盘重装系统教程
- 计算机专业认识论文3000字,计算机专业论文范文3000字.doc