leetcode刷題之35搜尋插入位置
阿新 • • 發佈:2018-12-22
這道題跟704二分查詢異曲同工之妙,不同點在於這道題需要返回插入陣列的位置,因此只需要將704二分查早的返回值改寫一下即可。
class Solution {
public int searchInsert(int[] nums, int target) {
int low = 0;
int high = nums.length-1;
while(low<=high){
int middle = low+(high-low)/2;
if(target>nums[middle]){
low= middle+1;
}else if (target<nums[middle]){
high=middle-1;
}else{
return middle;
}
}
return low;
}
}
巧妙的是採用二分查詢,若目標不在陣列內,low>high跳出迴圈,此時nums[high]<目標<nums[low], 因此目標在陣列內的位置就是low。