题目来源:https://leetcode.com/problems/search-insert-position/
问题描述
35. Search Insert Position
Easy
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
------------------------------------------------------------
题意
给定一个升序序列nums和一个数target,如果target在nums中则返回target的位置,否则返回target应该插入的位置。
------------------------------------------------------------
思路
二分查找变形,如果在nums中找到target则返回mid,找不到则返回l. 至于为什么返回左指针l,其实是跟题目具体的约定有关。
------------------------------------------------------------
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int n = nums.length, l = 0, r = n - 1, mid = 0;
if (n == 0)
{
return 0;
}
while (l <= r)
{
mid = (l + r) / 2;
if (nums[mid] == target)
{
return mid;
}
else if (nums[mid] < target)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
return l;
}
}