天天看點

LeetCode_數組_簡單_35.搜尋插入位置1.題目2.思路3.代碼實作(Java)

目錄

  • 1.題目
  • 2.思路
  • 3.代碼實作(Java)

1.題目

給定一個排序數組和一個目标值,在數組中找到目标值,并傳回其索引。如果目标值不存在于數組中,傳回它将會被按順序插入的位置。你可以假設數組中無重複元素。

示例 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

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/search-insert-position

2.思路

由于數組時有序的,是以在查找時優先考慮使用二分查找法,如果能找到目标值則直接傳回其數組下标,否則target需要插入的位置就是low,最後傳回low的值即可。

3.代碼實作(Java)

public int searchInsert(int[] nums, int target) {
        if(nums==null || nums.length==0){
            return 0;
        }
        int low=0,high=nums.length-1;
        while(low<=high){
            int mid=(low+high)/2;
            if(nums[mid]==target){
                return mid;
            }
            if(nums[mid]>target){
                high=mid-1;             
            }else{
                low=mid+1;
            }
        }
        //若能運作到這裡,說明目标值不存在于數組中
        //并且此時target将會被按順序插入的位置下表就是low
        return low;
    }