【刷题记录】35. 搜索插入位置

简介: 【刷题记录】35. 搜索插入位置

一、题目描述


来源:力扣(LeetCode)


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


请必须使用时间复杂度为

网络异常,图片无法展示
|
的算法。




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


提示:


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


二丶思路分析


二分查找


这道如果该题目暴力解决的话需要

网络异常,图片无法展示
|
的时间复杂度,但是题目要求
网络异常,图片无法展示
|
 所以我们使用 二分查找来实现
查找过程中


  • 每次根据 nums[mid] 和 target 之间的大小进行判断
  • 相等则直接返回下标
  • nums[mid] < target , left 右移
  • nums[mid] > target , right 左移
  • 查找结束如果没有相等值则返回 left,该值为插入位置


三、代码实现

class Solution {
    public int searchInsert(int[] nums, int target) {
        int length = nums.length;
        int left =0, right = length -1;
        int res = length;
while (left <= right) {
            int mid = ((right - left) >> 1) + left;
if (target <= nums[mid]) {
                res = mid;
                right = mid -1;
            } else {
                left = mid +1;
            }
        }
        return res;
    }
}

复杂度分析


时间复杂度:

网络异常,图片无法展示
|
, n 为数组的长度


空间复杂度:

网络异常,图片无法展示
|


运行结果


网络异常,图片无法展示
|


总结


这道题目就是一个二分查找的运用,比较简单。


对于二分查找这种模板算法,我们还是要熟练的掌握


继续加油~~

目录
相关文章
|
27天前
|
算法 索引
【力扣】35. 搜索插入位置
【力扣】35. 搜索插入位置
|
4月前
|
算法 前端开发 索引
前端算法-搜索插入位置
前端算法-搜索插入位置
|
4月前
|
C++ 索引 Python
leetcode-35:搜索插入位置
leetcode-35:搜索插入位置
22 0
|
11月前
|
算法 安全 Swift
LeetCode - #35 搜索插入位置
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
11月前
|
算法
每日一题——搜索插入位置(二分查找)
每日一题——搜索插入位置(二分查找)
|
11月前
|
索引
leetcode:35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
30 0
|
12月前
搜索插入位置力扣35
搜索插入位置力扣35
44 0
|
算法 索引
LeetCode:35. 搜索插入位置
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。
|
Java C++ 索引
leetcode 35 搜索插入位置
leetcode 35 搜索插入位置
68 0