35. 搜索插入位置

题目:

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

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

复制代码
输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

复制代码
输入: nums = [1,3,5,6], target = 2
输出: 1

解法一:

java 复制代码
class Solution {
    public int searchInsert(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] >= target) { 
                return i;
            }
        }
        return nums.length; 
    }
}

解法二:

只要看到题里给出的数组是有序数组,都可以想一想是否可以使用二分法。

java 复制代码
class Solution {
    public int searchInsert(int[] nums, int target) {
        int size = nums.length;
        int slow = 0;
        int fast = size - 1;
        while(slow <= fast){
            int mid = slow + (fast - slow) / 2;
            if (nums[mid] > target){
                fast = mid - 1;
            }else if(nums[mid] < target){
                slow = mid + 1;
            }else{
                return mid;
            }
        }
        return fast + 1;
    }
}
相关推荐
Yzzz-F13 分钟前
2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]
算法
abant218 分钟前
leetcode 114 二叉树变链表
算法·leetcode·链表
tankeven20 分钟前
HJ165 小红的优惠券
c++·算法
先积累问题,再逐次解决37 分钟前
快速幂优美算法
算法
XiYang-DING1 小时前
【LeetCode】 225.用队列实现栈
算法·leetcode·职场和发展
花月C1 小时前
线性动态规划(Linear DP)
算法·动态规划·代理模式
派大星~课堂1 小时前
【力扣-148. 排序链表】Python笔记
python·leetcode·链表
hetao17338372 小时前
2025-03-24~04-06 hetao1733837 的刷题记录
c++·算法
小白菜又菜2 小时前
Leetcode 657. Robot Return to Origin
python·leetcode·职场和发展