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

來源:35. 搜索插入位置

分析
這題沒什麼好說的,就是查找,簡單的直接暴力查找,依次遍歷即可;如果要提高效率的話,可採用二分法查找
因爲數組已有序,因此每次只需判斷中間位置的數與目標值的大小,分成前後兩個半區查找,以此類推,直到半區長度爲1。若沒查到,說明此元素不在數組中,其插入的位置應是半區的左邊下限的位置

代碼

public static int searchInsert(int[] nums, int target) {

        if(nums.length==0){
            return 0;
        }

        int low=0;
        int high= nums.length-1;

        while(low<=high){

            int mid=(high+low)/2;

            if(target==nums[mid]){
                return mid;
            }else if(target>nums[mid]){
                low=mid+1;
            }else {
                high=mid-1;
            }
        }

        return low;
    }

在這裏插入圖片描述
2020.03.20

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