再也不怕女朋友問我二分查找了!!!【手繪漫畫】面試必考之二分查找(解題模板和深度剖析),最終回

在這裏插入圖片描述

1、前言

今天是二分查找的最後一更,來做一下LeetCode中的探索的題~

下面一起來看看吧!!!
在這裏插入圖片描述
如何識別二分查找?

二分查找是一種在每次比較之後將查找空間一分爲二的算法。每次需要查找集合中的索引或元素時,都應該考慮二分查找。如果集合是無序的,我們可以總是在應用二分查找之前先對其進行排序。

二分查找一般由三個主要部分組成:

  • 預處理 —— 如果集合未排序,則進行排序。
  • 二分查找 —— 使用循環或遞歸在每次比較後將查找空間劃分爲兩半。
  • 後處理 —— 在剩餘空間中確定可行的候選者。

在這裏插入圖片描述
在這裏插入圖片描述

2、二分查找(LeetCode 704)

再也不怕女朋友問我二分查找了!!!【手繪漫畫】面試必考之二分查找中回(修訂版),(LeetCode 704題)
在這裏插入圖片描述

3、x 的平方根(LeetCode 69)

【手繪漫畫】圖解LeetCode之x 的平方根(LeetCode 69題)
在這裏插入圖片描述

4、猜數字大小(LeetCode 374)

【手繪漫畫】圖解LeetCode之猜數字大小(LeetCode 374題)
在這裏插入圖片描述

5、第一個錯誤的版本(LeetCode 278)

【手繪漫畫】圖解LeetCode之第一個錯誤的版本(LeetCode 278題)
在這裏插入圖片描述

6、尋找峯值(LeetCode 162)

【手繪漫畫】圖解LeetCode之尋找峯值(LeetCode 162題)
在這裏插入圖片描述

7、尋找旋轉排序數組中的最小值(LeetCode153)

這個之前講過!

【手繪漫畫】圖解LeetCode之尋找旋轉排序數組中的最小值(LeetCode153題)

修正版代碼:

int findMin(int* nums, int numsSize){
    int left=0;
    int right=numsSize-1;
    while(left<right){
        int mid=left+right >> 1;
        if(nums[mid]<nums[numsSize-1]){
            right=mid;
        }
        else{
            left=mid+1;
        }
    }
    return nums[left];
}

在這裏插入圖片描述
按照模板一,規規矩矩的,沒毛病。
在這裏插入圖片描述

8、總結

其實整體看一下,兩個模板基本沒啥大區別,,,主要還是熟練問題。

目前存疑的問題還有 leftright 的設置問題,感覺根據不同的題設計起來比較隨意。

再就是注意返回值,是 -1,還是某個下標,再或者數組的元素。
在這裏插入圖片描述

如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。

如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章