Search Insert Position
今天在LeetCode上面做了一道感觉最简单的算法题,叫做Search Insert Position,要求是给你一个按递增排好序的int类型数组和一个target值,找到数组中和target相等的值,找到返回数组下标,如果没找到相等的值则返回target如果按顺序插入插入的位置下标。题目最后还有一个附件条件:您可以假定数组中没有重复项(但我觉得这个条件没什么影响啊)
思路:
第一步:判断if(nums==null),如果是则return 0;
第二步:遍历nums[],与target依次比较大小,如果if(target<=nums[i]) return i;
第三步:如果能够遍历完nums[],说明target应该插入在最后一位,,所以直接返回nums.length即可
代码:
class Solution {
public int searchInsert(int[] nums, int target) {
if(nums==null)
return 0;
for(int i=0;i<nums.length;i++){
if(target<=nums[i])
return i;
}
return nums.length;
}
}
LeetCode的时间复杂度和空间复杂度如下
小结:
1、数组可以在一开始定义的是(int[] nums=null;)所以传进来的时候要先判断是不是为null,不然后面的操作会报空指针异常;
2、原来for(int i=0;i<10;i++)里面的i是局部变量,for循环结束之后销毁(i的值 和i的地址都不存在了),把它想象成一个while循环就觉得理所当然了,因为之前一直用全局变量来计数所以没有留意。。。。。。。