35.搜索插入位置
解题思路:
package leadcode;
/**
* @author : icehill
* @description : 搜索插入位置
* 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
* 你可以假设数组中无重复元素。
* 示例 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
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/search-insert-position
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
* 解题思路:
* 没啥好说的,有序序列,二分查找即可。
* 时间复杂度:O(logn) 空间复杂度:O(1)
* @date : 2021-05-18
*/
public class Solution35 {
public static void main(String[] args) {
int[] nums = {1, 3, 5, 6};
Solution35 solution35 = new Solution35();
System.out.println(solution35.searchInsert(nums, 0));
System.out.println(solution35.searchInsert(nums, 2));
System.out.println(solution35.searchInsert(nums, 5));
System.out.println(solution35.searchInsert(nums, 7));
}
public int searchInsert(int[] nums, int target) {
int len = nums.length;
int left = 0;
int right = len - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return right + 1;
}
}