文章目錄
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、總結
其實整體看一下,兩個模板基本沒啥大區別,,,主要還是熟練問題。
目前存疑的問題還有 left
和 right
的設置問題,感覺根據不同的題設計起來比較隨意。
再就是注意返回值,是 -1,還是某個下標,再或者數組的元素。
如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。
如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~