当前位置:网站首页>力扣35-搜索插入位置——二分查找
力扣35-搜索插入位置——二分查找
2022-08-02 11:41:00 【张怼怼√】
题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
解题思路
- 这也是一道查找元素的题目,题目要求是在有序数组查找元素并返回索引;
- 如果元素不在数组中应该返回他本应该的索引位置;
- 那么目标值有可能就有四种情况:①比第一个元素还小,放在数组最前面;②比最后一个元素大,插在数组尾部;③等于数组中某个值,返回索引;④在数组中未找到这个值,找合适的位置将其插入
- 可以想到这种题目应该要用二分法求解;
- 在开始判断target与数组首末元素的大小关系,并返回正确的索引;
- 在查找过程中采用左右闭合的区间 [ left , right ];
- 只是在判断完所有的情况时,不应该返回-1,应该返回 right+1,因为 right+1 是此时要插入位置的索引。
输入输出示例
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int n = nums.length;
int left = 0, right = n-1;
//boolean flag = false;
if(target < nums[0]){
return 0;
}else if(target > nums[n-1]){
return n;
}
while(left <= right){
int mid = left + ((right - left) >> 1);
if(target == nums[mid]){
//flag = true;
return mid;
}else if(target< nums[mid]){
//flag = true;
right = mid - 1;
}else if(target > nums[mid]){
//flag = true;
left = mid + 1;
}
}
return right+1;
}
}
边栏推荐
猜你喜欢
Outsourced Student Management System Architecture Documentation
[kali-information collection] (1.9) Metasploit + search engine tool Shodan
企业级数据治理工作怎么开展?Datahub这样做
数字化转型中的低代码
【MySQL系列】- LIKE查询 以%开头一定会让索引失效吗
What is the future of smartwatches?
excel 批量翻译-excel 批量函数公司翻译大全免费
【Acunetix-忘记密码】
字母交换--字符串dp
DTG-SSOD:最新半监督检测框架,Dense Teacher(附论文下载)
随机推荐
8大软件供应链攻击事件概述
ASP.NET Core 6框架揭秘实例演示[31]:路由&ldquo;高阶&rdquo;用法
【Acunetix-忘记密码】
Running yum reports Error: Cannot retrieve metalink for reposit
ES2020-23简单易懂又实用的精选特性讲解 日常开发必备干货!
数字化转型中的低代码
List排序 ,取最大值最小值
Failed to configure mysql, what's going on?
翁恺C语言程序设计网课笔记合集
QT笔记——QT类反射机制简单学习
使用无界队列的线程池会导致内存飙升吗?
免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
ansible模块--copy模块
OLED的HAL库代码介绍及使用(stm32f1/I2C/HAL库版/100%一次点亮)
Question about #oracle#, how to solve it?
Idea 全局搜索(idea如何全局搜索关键字)
网站自动翻译-网站批量自动翻译-网站免费翻译导出
SQL function TRIM
ECCV22|PromptDet:无需手动标注,迈向开放词汇的目标检测
sva assertion data