日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode704二分法:(左闭右闭+左闭右开)

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode704二分法:(左闭右闭+左闭右开) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

又重溫了一遍<肖生客的救贖> 其中安迪的一句話一直回蕩我的腦中:“人生可以歸結為一種簡單的選擇:不是忙著活,就是忙著死。” 多深刻,多簡單,又多令人深省, 哪有那么多選擇 哪有那么多時間去花費在無意義的事情上,要么忙著活,要么趕著去死

一:題目

二:思路

1.前提

注意這里的數組一定要是有序的,并不是任何數組均可用二分法查找target,他必須有序才可

2:左閉右閉(指的是區間)

(1):while(left<=right)中的 <=

這里的等于號 是當 left == right 的時候,這個區間[left,right]內我們還是可以找到target的
nums[1,4,7,9,11,13] 在這個數組中我們找target = 13

(2):區間的變化

我們每次在縮小的范圍的時候采取的是[left,right],
當target < nums[mid]時候 right = mid - 1, 那么下次的搜索范圍為[left,right]
當target > nums[mid]時候 left = mid +1,那么下次的搜索范圍為[left,right]

3:左閉右開

(1):while(left < right)中的 <

在左閉右開的范圍內,我們采用的是小于號,因為當left == right 的時候,在區間[left,right)是無范圍的,nums[1,4,7,9,11,13] 在這個數組中我們找target = 1(在左閉右開的中 right = 5是不對的 應該為 6 (數組的大小))

在這個范圍中,我們并在最后的區間[0,1)找到的taget,,也就是最終我們查找的最小范圍必須是兩個數,那么就不可能有left == right,因為此時是無范圍的

(2):區間的變化

我們每次縮小范圍的時候采用的是[left,right)
當target < nums[mid] 的時候 right = mid 那么下次的搜索空間[left,right)
當target > nums[mid] 的時候 left = mid +1 那么下次的搜索空間為[left,right)

三:上碼

1:左閉右閉

class Solution { public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while(left <= right){int mid = (left + right)/2;if(nums[mid] < target){left = mid + 1;}if(nums[mid] > target){right = mid - 1;}if(nums[mid] == target){return mid;}}return -1;} };

2:左閉右開

class Solution { public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size();//這里我們需要注意我們最小的區間范圍需要有兩個元素,那么當數組元素的個數為1時 [0,1),也是包含兩個元素的while(left < right){int mid = (left + right)/2;if(nums[mid] < target){left = mid + 1;}if(nums[mid] > target){right = mid;}if(nums[mid] == target){return mid;}}return -1;} };

四:總結

這是菜雞杰的二刷,二分法看似簡單,分析起來也容易理解,但是但是往往這種題值得推敲的細節 就比較重要,希望兄弟們注意,它的邊界和區間變化 如有疑問 請留言 加油陌生人!!

總結

以上是生活随笔為你收集整理的leetcode704二分法:(左闭右闭+左闭右开)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。