目錄
- 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;
}