【每日LeetCode】35. 搜索插入位置

題目

給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。

你可以假設數組中無重復元素。

示例 1:

輸入: [1,3,5,6], 5
輸出: 2
示例 2:

輸入: [1,3,5,6], 2
輸出: 1
示例 3:

輸入: [1,3,5,6], 7
輸出: 4
示例 4:

輸入: [1,3,5,6], 0
輸出: 0

題解

從左到右直接搜索

class Solution {
    public int searchInsert(int[] nums, int target) {
        if(nums == null) return 0;
        int i;
        for(i = 0; i < nums.length; i++){
            if(nums[i] >= target)
                return i;
        }
        return i;
    }
}

細心的同學發現,這道題的標簽上還有一個二分查找,其實就是因為有序,所以二分。有序的題目都要想想能不能用二分。

class Solution {
    public int searchInsert(int[] nums, int target) {
        if(nums == null) return 0;
        int low = 0;
        int high = nums.length-1;
        while(low <= high){
            int mid = (low + high) / 2;
            if(nums[mid] == target)
                return mid;
            else if(nums[mid] < target)
                low = mid + 1;
            else
                high = mid - 1;
        }
        return low;
    }
}
image

找工作的同學掃碼關注,每天一道面試算法題

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容