2022-4-19 二分查詢
阿新 • • 發佈:2022-04-19
704. 二分查詢
給定一個 n
個元素有序的(升序)整型陣列 nums
和一個目標值 target
,寫一個函式搜尋 nums
中的 target
,如果目標值存在返回下標,否則返回 -1
。
1 class Solution { 2 public int search(int[] nums, int target) { 3 int l=0,r=nums.length; 4 while (l<r){ 5 int mid=(l+r)/2; 6 if (nums[mid]==target){7 return mid; 8 }else if (nums[mid]>target){ 9 r=mid; 10 }else { 11 l=mid+1; 12 } 13 } 14 return -1; 15 } 16 }
思路:簡單的二分查詢基本寫法。
35. 搜尋插入位置
給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
請必須使用時間複雜度為 O(log n)
的演算法。
1 class Solution { 2 public int searchInsert(int[] nums, int target) { 3 int l=0,r=nums.length; 4 while (l<r){ 5 int mid=(l+r)/2; 6 if (nums[mid]==target) return mid; 7 else if (nums[mid]>target) { 8 r=mid;9 }else { 10 l=mid+1; 11 } 12 } 13 return l; 14 } 15 }
思路:跟左邊界的搜尋方法類似。