当前位置:首页 > 编程笔记 > 正文
已解决

LeetCode分支-搜索插入位置

来自网友在路上 160860提问 提问时间:2023-10-26 01:20:10阅读次数: 60

最佳答案 问答题库608位专家为你答疑解惑

description

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

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

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

idea

算法真是优雅的艺术~虽然我还很粗糙!
搜索指定数据位置,找不到则返回需要插入的位置。
因为加了小小的变动:找不到返回应该插入的位置。已知数组升序,我们可以把问题转换为找到首个大于等于target的位置

solution

class Solution {public int searchInsert(int[] nums, int target) {int left = 0, right = nums.length - 1, ans = nums.length;while(left <= right){int mid = (left + right) / 2;if(target > nums[mid]) left = mid + 1;else{ans = mid;right = mid - 1;} }return ans;}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"LeetCode分支-搜索插入位置":http://eshow365.cn/6-24627-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!