個人想法:
判斷:—暴力解法——無腦窮舉
public class Solution {
public int searchInsert(int[] nums, int target) {
if(nums.length==1){
if(nums[0]<target)
return 1;
else return 0;
}
for(int i=1;i<nums.length;i++){
if(i==1&&(target==nums[0])||target<nums[0])
return 0;
if(nums[i]==target)
return i;
if(nums[i-1]<target&&nums[i]>target){
return i;
}
}
return nums.length;
}
}
別人的想法:
二分搜索:
public int searchInsert(int[] A, int target) {
int low = 0, high = A.length-1;
while(low<=high){
int mid = (low+high)/2;
if(A[mid] == target) return mid;
else if(A[mid] > target) high = mid-1;
else low = mid+1;
}
return low;
}
思路:用循環代替了遞歸,實現了二分查找。如果查詢失敗,則返回low–low每次被修改,每次增加,最後增加到應該被插入的位置