【算法题解】LeetCode 35搜索插入位置

题目

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

你可以假设数组中无重复元素。

题解

这一题可采用基本的二分查找算法求解。只是需要注意下“当目标值不存在于数组中”时要返回应该插入的位置,这个条件。对于这个条件,我是这么判断的。因为最后和target比较的是nums[mid],目标值插入时一定在mid前或后,所以只要再判断下和mid的大小关系就好了,再考虑下mid为边界时的情况就可以了。

代码

class Solution {
    public int searchInsert(int[] nums, int target) {
        int start = 0,end = nums.length - 1;
        int mid = 0;
        while(start <= end) {
            mid = start + (end - start) / 2;
            if(nums[mid] == target) {
                return mid;
            } else if(nums[mid] > target) {
                end = mid -1;
            } else {
                start = mid + 1;
            }
        }
        mid = (nums[mid] > target) ? mid : mid + 1;
        return mid;
    }
}

猜你喜欢

转载自blog.csdn.net/vxzhg/article/details/106748528