【嘎】数组-搜索插入位置

题目:

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

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

解答:(其中一开始没有注意到target > nums[len - 1] 的情况)

class Solution {
    public int searchInsert(int[] nums, int target) {
        int len = nums.length;
        if (len == 0) {
            return 0;
        }
        int res = 0;
        for (int i = 0; i < len-1; i++) {
            if (nums[i] < target && target < nums[i+1]) {
                res = ++i;
                break;
            } else {
                if (nums[i] == target) {
                    res = i;
                    break;
                }
                if (nums[i+1] == target) {
                    res = i+1;
                    break;
                }
            }
        }
        // 大于最后一位数
        if (target > nums[len - 1]) {
            res = len;
        }
        return res;
    }
}

  

 看了看别人的解法,我写的除了for循环之外的上下两种解法都可以归结为 return nums.length;

 然后我把res去掉直接就在for循环里面return,最后return了nums.length,然后就出错了,因为for循环里面没有考虑到target < nums[0]的情况,上面那种写法不出错是因为res初始化的时候为0了。

 其实for循环里面只要判断是不是小于就可以了

public int searchInsert(int[] nums, int target) {
    for(int i = 0; i < nums.length;i++){
        if(nums[i] >= target){
            return i;
        }
    }
    return nums.length;
}

猜你喜欢

转载自www.cnblogs.com/utomboy/p/13175514.html