难度系数: 简单
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(logn) 的算法。
示例 1:
1 2
| 输入: nums = [1,3,5,6], target = 5 输出: 2
|
示例 2:
1 2
| 输入: nums = [1,3,5,6], target = 2 输出: 1
|
示例 3:
1 2
| 输入: nums = [1,3,5,6], target = 7 输出: 4
|
提示:
- 1 <= nums.length <= 104
- -104 <= nums[i] <= 104
- nums 为 无重复元素 的 升序 排列数组
- -104 <= target <= 104
解法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public int searchInsert(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right) { int middle = left + (right - left) / 2; if (nums[left] == target) { return left; } if (nums[right] == target) { return right; } if (nums[middle] == target) { return middle; } if (nums[middle] < target) { left = middle + 1; } if (nums[middle] > target) { right = middle - 1; } } return left; } }
|
原题链接:https://leetcode.cn/problems/search-insert-position/