[leetcode]解題報告35. Search Insert Position

個人想法:

判斷:—暴力解法——無腦窮舉

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每次被修改,每次增加,最後增加到應該被插入的位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章