Q2 LeetCode35 搜尋插入位置

清川1發表於2024-06-01
          //有序查詢,無重複元素,要求時間複雜度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 }

相關文章