国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題

這篇具有很好參考價(jià)值的文章主要介紹了算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本內(nèi)容是筆者結(jié)合《代碼隨想錄》總結(jié)所得,記錄學(xué)習(xí)過(guò)程,分享知識(shí)!


目錄:
1. 開(kāi)篇例題:704. 二分查找
2. 題解參考(模板寫法)

- - 2.1 方法一:左閉右閉寫法
- - 2.2 方法二:左閉右開(kāi)寫法

3. 模板解釋:左閉右閉

- - 3.1 區(qū)間劃定
- - 3.2 left 、right 移動(dòng)問(wèn)題
- - 3.3 循環(huán)條件選擇:<=

4. 模板解釋:左閉右開(kāi)

- - 4.1 區(qū)間劃定
- - 4.2 left 、right 移動(dòng)問(wèn)題
- - 4.3 循環(huán)條件選擇:<
5. 相關(guān)題集


1. 開(kāi)篇例題:704. 二分查找

例題:點(diǎn)擊直飛

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題


2. 題解參考

2.1 方法一:左閉右閉寫法
class Solution {
public:
    int search(vector<int>& nums, int target) {
        // 左閉右閉:left:指向首元素,right:指向尾元素;
        int left = 0, right = nums.size()-1;
        // 注意循環(huán)條件:<=
        while(left <= right){
            int mid = left + (right - left) / 2;
            if(nums[mid] > target ) right = mid - 1;
            else if(nums[mid] < target) left = mid + 1;
            else return mid;
        }
        return -1;
    }
};
2.2 方法二:左閉右開(kāi)寫法
class Solution {
public:
    int search(vector<int>& nums, int target) {
        // 左閉右開(kāi):left:指向首元素,right:指向尾元素下一個(gè)位置;
        int left = 0, right = nums.size();
        // 注意循環(huán)條件:<
        while(left < right){
            int mid = left + (right - left) / 2;
            if(nums[mid] > target ) right = mid;
            else if(nums[mid] < target) left = mid + 1;
            else return mid;
        }
        return -1;
    }
};

3. 模板解釋:左閉右閉

3.1 區(qū)間劃定

左閉右閉:即說(shuō)的是:left 與 right 的初始值【 兩個(gè)“指針的指向” 】
左閉右閉:left:指向首元素,right:指向尾元素;(如下圖)

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題

3.2 left 、right 移動(dòng)問(wèn)題

由于是:左閉右閉區(qū)間情形,那么 left 和 right 一定指向順序表中的某個(gè)值!
顯然:

  1. right 的移動(dòng):若:nums[mid] > target,則說(shuō)明 target 不在 [mid,right] 區(qū)間范圍內(nèi),此時(shí)移動(dòng) right,移動(dòng)方式:right = mid -1;
  2. left 的移動(dòng):若:nums[mid] < target,則說(shuō)明 target 不在 [left,mid] 區(qū)間范圍內(nèi),此時(shí)移動(dòng) left ,移動(dòng)方式:left = mid +1;

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題

3.3 循環(huán)條件選擇:<=

顯然,如果:順序表中只有一個(gè)元素:left == right【由區(qū)間選擇所得】
若 選擇: < (非 <= )則:不會(huì)進(jìn)入循環(huán)!
無(wú)法得到:mid 進(jìn)行搜索判斷!
直接返回結(jié)果:-1(未找到?。?/p>


4. 模板解釋:左閉右開(kāi)

4.1 區(qū)間劃定

左閉右開(kāi):即說(shuō)的是:left 與 right 的初始值【 兩個(gè)“指針的指向” 】
左閉右開(kāi):left:指向首元素,right:指向尾元素下一個(gè)位置;(如下圖)

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題

4.2 left 、right 移動(dòng)問(wèn)題

由于是:左閉右開(kāi)區(qū)間情形,那么 left 一定指向順序表中的某個(gè)值!但 right 不會(huì)指向任意一個(gè)值!
顯然:

  1. right 的移動(dòng):若:nums[mid] > target,則說(shuō)明 target 不在 [mid,right) 區(qū)間范圍內(nèi),此時(shí)移動(dòng) right,移動(dòng)方式:right = mid;
    難點(diǎn):mid 在比較過(guò)程中,理解右端點(diǎn)移動(dòng),mid 指向的若不是目標(biāo)值,則區(qū)間縮減時(shí),mid 已經(jīng)不存在新區(qū)間中了?。。?/li>
  2. left 的移動(dòng):若:nums[mid] < target,則說(shuō)明 target 不在 [left,mid] 區(qū)間范圍內(nèi),此時(shí)移動(dòng) left ,移動(dòng)方式:left = mid +1;

算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題
算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題

4.2 循環(huán)條件選擇:<

顯然,非空順序表中一定存在:left != right【由區(qū)間選擇所得】
即至少會(huì)進(jìn)入一個(gè)循環(huán):即只有一個(gè)元素的情形!
同時(shí):由于 left 若滿足合法指向,就一定滿足:left < right,不存在 =
因此:選擇:<


5. 相關(guān)題集

待選中文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-444337.html

到了這里,關(guān)于算法刷題營(yíng)【Day1】:: 704.二分查找:二分法詳談與相關(guān)刷題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 算法刷題營(yíng)【Day1】:: 27. 移除元素:快慢指針在順序表中的應(yīng)用與相關(guān)刷題

    算法刷題營(yíng)【Day1】:: 27. 移除元素:快慢指針在順序表中的應(yīng)用與相關(guān)刷題

    本內(nèi)容是筆者結(jié)合《代碼隨想錄》總結(jié)所得,記錄學(xué)習(xí)過(guò)程,分享知識(shí)! 目錄: 1. 開(kāi)篇例題:27. 移除元素 2. 題解參考 3. 題解思路 4. 相關(guān)題 [ - - 4.1 26. 刪除有序數(shù)組中的重復(fù)項(xiàng) ] [ - - 4.1 283. 移動(dòng)零 ] 5. 相關(guān)題題解及簡(jiǎn)要思路 - - 5.1 26. 刪除有序數(shù)組中的重復(fù)項(xiàng) - - 5.1 283. 移動(dòng)

    2024年02月06日
    瀏覽(21)
  • 代碼隨想錄算法練習(xí)Day1:二分查找

    代碼隨想錄算法練習(xí)Day1:二分查找

    題目鏈接:704. 二分查找 卡哥視頻講解:手把手帶你撕出正確的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找 二分法概述: 二分法(Binary Search)是一種在有序數(shù)組或列表中查找目標(biāo)元素的算法。 二分法使用前提 : 有序數(shù)組或列表 :二分法要求在查找的數(shù)據(jù)結(jié)

    2024年04月23日
    瀏覽(95)
  • LeetCode刷題筆記-704.二分查找

    ?我們定義target在一個(gè)左右都是關(guān)閉的區(qū)間,[left,right] while(left = right) 這里使用= 因?yàn)閘eft == right 是有意義的 int mid = left + ((right - left) / 2) 這么寫是為了防止溢出 常用操作 當(dāng)nums[mid] target 將right = mid - 1因?yàn)閠arget 不可能在mid處取到 當(dāng)nums[mid] target 將left = mid + 1

    2024年02月11日
    瀏覽(23)
  • 【算法】【算法雜談】旋轉(zhuǎn)數(shù)組的二分法查找

    【算法】【算法雜談】旋轉(zhuǎn)數(shù)組的二分法查找

    當(dāng)前所有算法都使用測(cè)試用例運(yùn)行過(guò),但是不保證100%的測(cè)試用例,如果存在問(wèn)題務(wù)必聯(lián)系批評(píng)指正~ 在此感謝左大神讓我對(duì)算法有了新的感悟認(rèn)識(shí)! 原問(wèn)題 給定一個(gè)從小到大有序的數(shù)組,該數(shù)組存在重復(fù)的數(shù),并且該數(shù)組可能經(jīng)過(guò)旋轉(zhuǎn)處理,如arr = [1,2,3,4,5,6,7]代表數(shù)組未旋

    2024年02月06日
    瀏覽(32)
  • 數(shù)據(jù)結(jié)構(gòu)和算法之二分法查找

    二分法查找,也稱作 二分查找 或 折半查找 ,是一種在有序數(shù)組中快速查找特定元素的算法。它采用分治法思想,通過(guò)將問(wèn)題劃分為規(guī)模更小的子問(wèn)題,并且通過(guò)對(duì)子問(wèn)題的查找來(lái)解決原問(wèn)題。 二分法查找的思路是不斷地將數(shù)組一分為二,然后判斷目標(biāo)值在哪一部分,進(jìn)而

    2024年02月09日
    瀏覽(31)
  • 看完這篇文章你就徹底懂啦{保姆級(jí)講解}-----(LeetCode刷題704、35、34數(shù)組二分查找) 2023.4.17

    看完這篇文章你就徹底懂啦{保姆級(jí)講解}-----(LeetCode刷題704、35、34數(shù)組二分查找) 2023.4.17

    本文章一部分內(nèi)容參考于《代碼隨想錄》----如有侵權(quán)請(qǐng)聯(lián)系作者刪除即可,撰寫本文章主要目的在于記錄自己學(xué)習(xí)體會(huì)并分享給大家,全篇并不僅僅是復(fù)制粘貼,更多的是加入了自己的思考,希望讀完此篇文章能真正幫助到您?。?! 數(shù)組是由n(n=1)個(gè) 相同類型 的數(shù)據(jù)元素

    2024年02月05日
    瀏覽(28)
  • 【代碼隨想錄算法第一天| 704.二分查找 27.移除元素】

    題目鏈接:二分查找 文章講解:代碼隨想錄.二分查找 視頻講解:手把手帶你撕出正確的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_嗶哩嗶哩_bilibili 二分前提:有序數(shù)組,數(shù)組中無(wú)重復(fù)元素 方法:結(jié)合數(shù)組的特征,可以為左閉右閉區(qū)間[0, 數(shù)組長(zhǎng)度-1],或者左

    2024年02月16日
    瀏覽(21)
  • 算法刷題營(yíng)【Day2】:: 雙指針?biāo)惴☉?yīng)用:滑動(dòng)窗口 :209. 長(zhǎng)度最小的子數(shù)組

    算法刷題營(yíng)【Day2】:: 雙指針?biāo)惴☉?yīng)用:滑動(dòng)窗口 :209. 長(zhǎng)度最小的子數(shù)組

    本內(nèi)容是筆者結(jié)合《代碼隨想錄》總結(jié)所得,記錄學(xué)習(xí)過(guò)程,分享知識(shí)! 目錄: 1. 開(kāi)篇例題:209. 長(zhǎng)度最小的子數(shù)組 2. 題解參考 - - 2.1 方法一:暴力法 - - 2.2 方法二:滑動(dòng)窗口 3. 方法思路點(diǎn)撥:滑動(dòng)窗口 - - 3.1 直白解釋 - - 3.2 本題思路點(diǎn)撥 4. 相關(guān)題集 1. 開(kāi)篇例題:209. 長(zhǎng)度

    2024年02月04日
    瀏覽(33)
  • 【二分查找】一文帶你掌握二分法 (附萬(wàn)能模板)

    【二分查找】一文帶你掌握二分法 (附萬(wàn)能模板)

    一、簡(jiǎn)介 哪怕沒(méi)有學(xué)過(guò)編程的同學(xué),也許不知道二分法這個(gè)名字,但也一定接觸過(guò)它的核心思想。不了解的同學(xué)也沒(méi)關(guān)系,我用一句話就能概括出它的精髓: 將一個(gè)區(qū)間一分為二,每次都舍棄其中的一部分。 二分法能夠極大地降低我們?cè)诮鉀Q問(wèn)題時(shí)的時(shí)間復(fù)雜度。假如你要

    2024年01月19日
    瀏覽(23)
  • Leetcode刷題筆記——二分法

    Leetcode刷題筆記——二分法

    二分法是搜索算法中極其典型的方法,其要求輸入序列有序并可隨機(jī)訪問(wèn)。算法思想為 輸入:有序數(shù)組nums,目的數(shù)值target 要求輸出:如果target存在在數(shù)組中,則輸出其index,否則輸出-1 將原數(shù)組通過(guò)[left,right]兩個(gè)索引劃分范圍,初值left=0,right=數(shù)組的最后一個(gè)元素 當(dāng)left = r

    2024年02月10日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包