LeetCode#35 搜索插入位置

it2023-02-18  88

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

你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5 输出: 2 示例 2:

输入: [1,3,5,6], 2 输出: 1 示例 3:

输入: [1,3,5,6], 7 输出: 4 示例 4:

输入: [1,3,5,6], 0 输出: 0 先用二分法接近目标,再动态规划目标所在位置。

class Solution { public int searchInsert(int[] nums, int target) { if(nums.length == 0)return 0; if(nums.length == 1){ if(target == nums[0])return 0; else if(target > nums[0])return 1; else return 0; } int left = 0; int right = nums.length-1; int mid = 0; while(left <= right){//mid会向接近target的方向移动 mid = left + (right - left)/2; if(nums[mid] == target)return mid; if(nums[mid] > target)right = mid - 1; if(nums[mid] < target)left = mid + 1; } if(nums[mid] < target)return mid + 1;//如果target比mid还大,则在末尾添加target即可 else if(nums[mid] > target){//如果target比nums[mid]小,则将mid的位置让给target return mid; } return -1; } }

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-insert-position

最新回复(0)