【leetcode】35. (Easy)Search Insert Postion(JAVA)
阿新 • • 發佈:2018-12-17
解題思路: 還是折半查詢,設定三個指標分別指向陣列兩邊和中間,如果中間的值是要找的值直接返回位置座標; 如果左指標和右指標重合,說明沒有找到這個數,可以分為3個情況: 目標大於最大數時,此時指標right在陣列最右位置,返回right的下一個位置; 目標小於最小數時,left指標在0位置,此時返回0; 目標在兩個數之間,此時right在left左邊,返回right位置的後面一個位置
提交程式碼:
class Solution {
public int searchInsert(int[] nums, int target) {
if(nums==null|| nums.length==0) return -1;
int mid,left=0,right=nums.length-1;
while(left<=right) {
mid=(left+right)/2;
if(nums[mid]<target) left=mid+1;
else if(nums[mid]>target) right=mid-1;
else return mid;
}
//如果target小於最小數,left=0
//如果target大於最大數,right在最右
//target加在right、left之間(這時候left=right+1)
if(left==0) return 0;
else if(right==nums.length-1) return nums.length;
else if(target>nums[right]) return right+1;
else return right;
}
}
執行結果: