标签:res 上下 目标 i+1 span 存在 一个 ima 排序
题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
解答:(其中一开始没有注意到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; }
标签:res 上下 目标 i+1 span 存在 一个 ima 排序
原文地址:https://www.cnblogs.com/utomboy/p/13175514.html