题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
1:我的解法:我还没学过数据结构和算法,感觉我写的像是面向结果编程。有没有大佬指导一下。
class Solution {
public int searchInsert(int[] nums, int target) {
int n=nums.length;
if(nums[0]>=target)return 0;
for(int i=1;i<n;i++){
if(nums[i]==target||(nums[i]>target)&&(nums[i-1]<target))return i;
}return n;
}
}
2:二分查找:用left,mid,right来缩短查询时间
class Solution {
public int searchInsert(int[] nums, int target) {
int n=nums.length;
int l=0,r=n-1;
while(l<=r){
int mid=l+(r-l)/2;
if(nums[mid]<target)l=mid+1;
else {r=mid-1;}
}return l;
}
}