35. Search Insert Position

来源:互联网 发布:摩尔软件安装 编辑:程序博客网 时间:2024/06/06 00:06

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.

Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0


Solution:

Tips:

Note the edge cases, leverage binary search. compare the middle element and its adjacent elements with target value.


Java Code:

public class Solution {    public int searchInsert(int[] nums, int target) {        // assume nums is not null        return searchInsert(nums, 0, nums.length - 1, target);    }        public int searchInsert(int[] nums, int b, int e, int target) {        int middle = b + (e - b) / 2;        if (nums[middle] == target) {            return middle;        }                if (target < nums[middle]) {            if (0 == middle) {                return 0;            }            if (target > nums[middle - 1] ) {                return middle;            }                        return searchInsert(nums, b, middle - 1, target);                    } else {            if (nums.length - 1 == middle) {                return middle + 1;            }                        if (target < nums[middle + 1]) {                return middle + 1;            }                        return searchInsert(nums, middle + 1, e, target);        }    }}


0 0
原创粉丝点击