1. 程式人生 > 其它 >2022-4-19 二分查詢

2022-4-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 }

思路:跟左邊界的搜尋方法類似。