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

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目

這篇具有很好參考價(jià)值的文章主要介紹了算法修煉之路之雙指針含多道leetcode 經(jīng)典題目。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

前言?

一:普通雙指針

1.經(jīng)典題目一? 283移動(dòng)0問題

分析

代碼實(shí)現(xiàn)

2.經(jīng)典題目二 1089復(fù)寫0?

分析

代碼實(shí)現(xiàn)

二:解決成環(huán)類問題-快慢指針?

經(jīng)典例題一 202快樂數(shù)

分析?

代碼實(shí)現(xiàn)?

?三:左右相遇指針

經(jīng)典例題一 11 盛最多水的容器

分析?

代碼實(shí)現(xiàn)?

?


算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

接下來(lái)的日子會(huì)順順利利,萬(wàn)事勝意,生活明朗-----------林辭憂

前言?

在解決關(guān)于數(shù)組的問題時(shí),常常用到雙指針的解決方法來(lái)優(yōu)化算法,幫助解決問題,常見的雙指針分為普通雙指針,快慢指針,左右相遇指針等

一:普通雙指針

普通雙指針就是解決普通問題,一般是在原數(shù)組上改動(dòng)數(shù)據(jù)時(shí),有從前向后,從后向前,都從前向后,都從后向前,對(duì)數(shù)組分塊來(lái)解決問題等

1.經(jīng)典題目一? 283移動(dòng)0問題

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

分析

?算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

代碼實(shí)現(xiàn)
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        //雙指針方法
        int cur=0,dest=-1;
        int n=nums.size();
        while(cur<n)
        {
            if(nums[cur]==0)
            {
                ++cur;
            }
            else
            {
                swap(nums[++dest],nums[cur++]);
            }
        }
    }
};

2.經(jīng)典題目二 1089復(fù)寫0?

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

分析

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法?

代碼實(shí)現(xiàn)

?

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int cur=0,dest=-1;
        int n=arr.size();
        //求最后一個(gè)要復(fù)寫的數(shù)據(jù)
        while(cur<n)
        {
            if(arr[cur])//不為0走一步
            {
                ++dest;
            }
            else//為0走兩步
            {
                dest+=2;
            }
            if(dest>=n-1) break;//邊界問題防止越界訪問
            ++cur;
        }

        //處理邊界問題
        if(dest==n)
        {
            arr[n-1]=0;
            dest-=2;
            cur-=1;
        }

        //再?gòu)暮笸皬?fù)寫數(shù)據(jù)
        while(cur>=0)
        {
            if(arr[cur])
            {
                arr[dest--]=arr[cur--];
            }
            else
            {
                arr[dest--]=0;
                arr[dest--]=0;
                --cur;
            }
        }
    }
};

二:解決成環(huán)類問題-快慢指針?

在解決一些關(guān)于數(shù)組或者鏈表成環(huán)類問題時(shí)常常用到的是快慢指針,就是slow指針走一步,fast指針一次走兩步,常常用相遇來(lái)解決問題

經(jīng)典例題一 202快樂數(shù)

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

分析?

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

代碼實(shí)現(xiàn)?
class Solution {
public:
    int bitSum(int n)//計(jì)算n的平方和
    {
        int sum=0;
        while(n)
        {
            int tmp=n%10;
            sum+=tmp*tmp;
            n/=10;
        }
        return sum;
    }
    bool isHappy(int n) {
        int slow=n,fast=bitSum(n);//slow為第一個(gè)位置,fast為第二個(gè)位置
        while(slow!=fast)//走到直至相遇
        {
            slow=bitSum(slow);
            fast=bitSum(bitSum(fast));
        }
        if(slow==1)//是1的話則是快樂數(shù)
        {
            return true;
        }
        return false;
    }
};

?三:左右相遇指針

說(shuō)明一下,左右相遇指針是自己理解取的名字,意思就是這類題定義的雙指針得從兩端向中間走,直至相遇

經(jīng)典例題一 11 盛最多水的容器

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法

分析?

對(duì)于這道題大多人首先想到的是暴力求解,求出每?jī)蓚€(gè)數(shù)據(jù)之間的容量,在求出最大的一個(gè)

但這樣的話對(duì)于這道題,這樣做的話會(huì)超出時(shí)間限制的,因此得采取其他方法

算法修煉之路之雙指針含多道leetcode 經(jīng)典題目,經(jīng)典算法,算法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-850214.html

代碼實(shí)現(xiàn)?
class Solution {
public:
    int maxArea(vector<int>& height) {
        int left=0,right=height.size()-1;//左右雙指針
        int ret=0;
        while(left<right)
        {
            int v=min(height[left],height[right])*(right-left);//算出數(shù)據(jù)
            ret=max(ret,v);//求出最大的一個(gè)數(shù)據(jù),存放在ret中

            //移動(dòng)指針
            if(height[left]<height[right])
            {
                ++left;
            }
            else
            {
                --right;
            }
        }
        return ret;
    }
};
?

到了這里,關(guān)于算法修煉之路之雙指針含多道leetcode 經(jīng)典題目的文章就介紹完了。如果您還想了解更多內(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)文章

  • 算法之雙指針題型:

    算法之雙指針題型:

    力扣27: 移除元素 力扣題目鏈接 雙指針分為: 快慢雙指針:同一個(gè)起點(diǎn),同向出發(fā) 相向雙指針:從兩端出發(fā),方向相反,終會(huì)相遇 經(jīng)典的雙指針(快慢雙指針) 代碼隨想錄上面有動(dòng)圖,很清楚 思路: 力扣977: 有序數(shù)組的平方 力扣題目鏈接 也是雙指針法(相向指針) 如

    2024年02月09日
    瀏覽(17)
  • c++算法之雙指針

    目錄 雙指針簡(jiǎn)介 對(duì)撞指針 求解步驟 例題 藍(lán)橋oj1371回文判定 題目描述 輸入描述 輸出描述 輸入輸出樣例 示例 1 示例 2 運(yùn)行限制 解 快慢指針 求解步驟 例題 藍(lán)橋oj1372美麗的區(qū)間 題目描述 輸入描述 輸出描述 輸入輸出樣例 示例 1 運(yùn)行限制 解 例題 藍(lán)橋oj 1621挑選字串 題目描述

    2024年01月20日
    瀏覽(25)
  • 力扣編程題算法初階之雙指針?biāo)惴?代碼分析

    力扣編程題算法初階之雙指針?biāo)惴?代碼分析

    目錄 ? 第一題:復(fù)寫零 第二題:快樂數(shù): 第三題:盛水最多的容器 第四題:有效三角形的個(gè)數(shù) ? 力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái) 思路: 上期介紹到雙指針,這次來(lái)用雙指針實(shí)際操作。第一種從前往后復(fù)寫,會(huì)導(dǎo)致為復(fù)寫的數(shù)字被覆蓋,因此選擇從后往

    2024年02月04日
    瀏覽(18)
  • LeetCode | 一探環(huán)形鏈表的奧秘【快慢雙指針妙解BAT等大廠經(jīng)典算法題】

    LeetCode | 一探環(huán)形鏈表的奧秘【快慢雙指針妙解BAT等大廠經(jīng)典算法題】

    前言 本文總結(jié)了力扣141.環(huán)形鏈表|以及142.環(huán)形鏈表||這兩道有關(guān)環(huán)形鏈表的求解方案,去求證鏈表是否帶環(huán)已經(jīng)如何找出入環(huán)口的結(jié)點(diǎn)。 有關(guān)環(huán)形鏈表,在BAT等大廠面試中均有出現(xiàn),一般是屬于 中等難度 的題,需掌握 原題傳送門 給你一個(gè)鏈表的頭節(jié)點(diǎn) head ,判斷鏈表中是

    2024年02月01日
    瀏覽(25)
  • 【雙指針】經(jīng)典數(shù)組雙指針題LeetCode

    【雙指針】經(jīng)典數(shù)組雙指針題LeetCode

    27. 移除元素 簡(jiǎn)單 題目鏈接 給你一個(gè)數(shù)組 nums 和一個(gè)值 val,你需要 原地 移除所有數(shù)值等于 val 的元素,并返回移除后數(shù)組的新長(zhǎng)度。 不要使用額外的數(shù)組空間, 你必須僅使用 O(1) 額外空間并原地修改輸入數(shù)組。 元素的順序可以改變。你不需要考慮數(shù)組中超出新長(zhǎng)度后面的

    2024年02月12日
    瀏覽(19)
  • 【leetcode刷題之路】面試經(jīng)典150題(8)——位運(yùn)算+數(shù)學(xué)+一維動(dòng)態(tài)規(guī)劃+多維動(dòng)態(tài)規(guī)劃

    20 位運(yùn)算 20.1 【位運(yùn)算】二進(jìn)制求和 題目地址:https://leetcode.cn/problems/add-binary/description/?envType=study-plan-v2envId=top-interview-150 ??按位逆序運(yùn)算。 20.2 【位運(yùn)算】顛倒二進(jìn)制位 題目地址:https://leetcode.cn/problems/reverse-bits/description/?envType=study-plan-v2envId=top-interview-150 ??詳見代碼

    2024年04月16日
    瀏覽(40)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】之多指針?biāo)惴ń?jīng)典問題

    【數(shù)據(jù)結(jié)構(gòu)與算法】之多指針?biāo)惴ń?jīng)典問題

    本文為 【數(shù)據(jù)結(jié)構(gòu)與算法】多指針?biāo)惴ń?jīng)典問題 相關(guān)介紹,下邊將對(duì) 鏈表反轉(zhuǎn) (包含 迭代反轉(zhuǎn)鏈表 、 遞歸反轉(zhuǎn) 、 頭插法反轉(zhuǎn) ), 雙指針-快慢指針 (包含 尋找單向無(wú)環(huán)鏈表的中點(diǎn) 、 判斷單向鏈表是否有環(huán)及找環(huán)入口 ), 雙指針-左右指針 (包含 兩數(shù)之和 、 二分查

    2024年02月03日
    瀏覽(19)
  • 復(fù)現(xiàn)經(jīng)典目標(biāo)跟蹤算法ByteTrack之路:調(diào)通第一個(gè)demo

    復(fù)現(xiàn)經(jīng)典目標(biāo)跟蹤算法ByteTrack之路:調(diào)通第一個(gè)demo

    ByteTrack源論文地址:https://arxiv.org/pdf/2110.06864.pdf ByteTrack開源代碼地址:https://github.com/ifzhang/ByteTrack 本文在官方給出的配置指南編寫,提供了許多避坑方式。 可直接使用Git clone到本地 也可以使用pycharm自帶的方式直接將代碼clone下來(lái)。 寫在前面:為了不引起各種版本不適配導(dǎo)

    2024年04月09日
    瀏覽(17)
  • 【經(jīng)典算法】雙指針(尺取法):愛,是雙向奔赴,還是你追我趕?

    【經(jīng)典算法】雙指針(尺取法):愛,是雙向奔赴,還是你追我趕?

    ??專欄內(nèi)容:算法學(xué)習(xí)隨筆 ?個(gè)人主頁(yè):子夜的星的主頁(yè) ??座右銘:日拱一卒,功不唐捐 雙指針法又稱尺取法,顧名思義, 在區(qū)間操作時(shí),使用兩個(gè)指針同時(shí)遍歷區(qū)間,從而實(shí)現(xiàn)高效操作。 兩個(gè)指針,就像是一男一女,他們遍歷區(qū)間的過程,又何嘗不像是一對(duì)男女彼此

    2024年01月23日
    瀏覽(14)
  • leetcode經(jīng)典算法——快速冪

    leetcode經(jīng)典算法——快速冪

    實(shí)現(xiàn) pow(x, n) ,即計(jì)算 x 的整數(shù) n 次冪函數(shù)(即,xn )。 暴力方法肯定是循環(huán)循環(huán)n次, 每一次*x 顯然此方法遇到大的數(shù)字會(huì)超時(shí) 那么我們要引進(jìn)一個(gè)思想, 快速冪算法 例如: x^97 我們可以看出,從右向左 每當(dāng)n為奇數(shù)時(shí),就會(huì)多乘一次x 例如:x 97 = x 48 * x 48 * x; 當(dāng)n為偶數(shù)時(shí)

    2024年02月13日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包