//有序查詢,無重複元素,要求時間複雜度O(logn)
//如果有目標元素則返回位置
//如果沒有目標元素,最後一次right位置後面就是該插入的位置
第一次提交錯誤認為最後一次mid位置是插入的位置,其實最後一次right位置才是正確的插入位置(升序陣列)
1 class Solution{ 2 public int searchInsert(int[] nums, int target){ 3 //有序查詢,要求時間複雜度O(logn) 4 //如果有目標元素則返回位置 5 //如果沒有目標元素,最後一次right位置後面就是該插入的位置 6 7 int left=0; 8 int right=nums.length-1; 9 int mid=-1; 10 while(left<=right){ 11 mid=(left+right)/2; 12 if(nums[mid]>target){ 13 right=mid-1; 14 } 15 else if(nums[mid]<target){ 16 left=mid+1; 17 } 18 else{ 19 return mid; 20 } 21 } 22 return right+1; 23 } 24 }