题目链接:35.搜索插入位置(简单)
算法思路:
二分:二分查找该元素
没找到就返回最后一次查找的左边界下标(即为插入位置)
Java代码:
1/** 2 * Created with IntelliJ IDEA. 3 * Description: 4 * User: 王洋 5 * Date: 2025-08-28 6 * Time: 09:24 7 */ 8class Solution { 9 //35. 搜索插入位置 10 /*给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 11 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 12 请必须使用时间复杂度为 O(log n) 的算法。 13 示例 1: 14 输入: nums = [1,3,5,6], target = 5 15 输出: 2 16 示例 2: 17 输入: nums = [1,3,5,6], target = 2 18 输出: 1 19 示例 3: 20 输入: nums = [1,3,5,6], target = 7 21 输出: 4 22 提示: 23 1 <= nums.length <= 104 24 -104 <= nums[i] <= 104 25 nums 为 无重复元素 的 升序 排列数组 26-104 <= target <= 104*/ 27 public int searchInsert(int[] nums, int target) { 28 int left=0,right=nums.length-1,mid=0; 29 while(left<=right){ 30 mid=left+(right-left)/2; 31 if(nums[mid]<target) left=mid+1; 32 else if(nums[mid]>target) right=mid-1; 33 else if(nums[mid]==target) return mid; 34 } 35 return left; 36 } 37 38 public static void main(String[] args) { 39 System.out.println(new Solution().searchInsert(new int[]{1,3,5,6},5)); 40 } 41}
《优选算法-二分:19.搜索插入位置》 是转载文章,点击查看原文。
