题目描述补充
题目:二分查找Ⅱ
给定一个已按照升序排列的整数数组 nums
和一个目标值 target
,请编写一个函数来搜索 nums
中的 target
,如果 target
存在于数组中,则返回它的索引。如果 target
不存在于数组中,则返回它在升序排列的数组中应该插入的位置,以确保数组仍然保持有序。
请注意,你可以假设数组中不存在重复的元素。
示例 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
示例 4:
输入: nums = [1,3,5,6], target = 0
输出: 0
PHP 示例代码
function searchInsert($nums, $target) {
$left = 0;
$right = count($nums) - 1;
while ($left <= $right) {
$mid = $left + floor(($right - $left) / 2);
if ($nums[$mid] == $target) {
return $mid;
} elseif ($nums[$mid] < $target) {
$left = $mid + 1;
} else {
$right = $mid - 1;
}
}
// 当循环结束时,left 的值即为插入位置
return $left;
}
// 测试示例
$nums = [1, 3, 5, 6];
$target = 5;
echo searchInsert($nums, $target); // 输出: 2
Python 示例代码
def searchInsert(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
# 当循环结束时,left 的值即为插入位置
return left
# 测试示例
nums = [1, 3, 5, 6]
target = 5
print(searchInsert(nums, target)) # 输出: 2
JavaScript 示例代码
function searchInsert(nums, target) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 当循环结束时,left 的值即为插入位置
return left;
}
// 测试示例
const nums = [1, 3, 5, 6];
const target = 5;
console.log(searchInsert(nums, target)); // 输出: 2
码小课 网站中有更多相关内容分享给大家学习,涵盖各种算法和数据结构,欢迎访问并深入学习。