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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode刷题:滑动窗口模板以及典型例题

發(fā)布時(shí)間:2024/10/8 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode刷题:滑动窗口模板以及典型例题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:fuxuemingzhu
鏈接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/solution/fen-xiang-hua-dong-chuang-kou-mo-ban-mia-f76z/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

LeetCode刷題:滑動(dòng)窗口模板以及典型例題

  • 滑動(dòng)窗口模板
  • 1004. 最大連續(xù)1的個(gè)數(shù) III

滑動(dòng)窗口模板

《挑戰(zhàn)程序設(shè)計(jì)競(jìng)賽》這本書(shū)把滑動(dòng)窗口形象地叫做【蟲(chóng)取法】。因?yàn)榛瑒?dòng)窗口的兩個(gè)指針移動(dòng)的過(guò)程和蟲(chóng)子爬動(dòng)的過(guò)程非常像:前腳不動(dòng),把后腳移動(dòng)過(guò)來(lái);后腳不動(dòng),把前腳向前移動(dòng)。

def findSubArray(nums):N = len(nums) # 數(shù)組/字符串長(zhǎng)度left, right = 0, 0 # 雙指針,表示當(dāng)前遍歷的區(qū)間[left, right],閉區(qū)間sums = 0 # 用于統(tǒng)計(jì) 子數(shù)組/子區(qū)間 是否有效,根據(jù)題目可能會(huì)改成求和/計(jì)數(shù)res = 0 # 保存最大的滿足題目要求的 子數(shù)組/子串 長(zhǎng)度while right < N: # 當(dāng)右邊的指針沒(méi)有搜索到 數(shù)組/字符串 的結(jié)尾sums += nums[right] # 增加當(dāng)前右邊指針的數(shù)字/字符的求和/計(jì)數(shù)while 區(qū)間[left, right]不符合題意:# 此時(shí)需要一直移動(dòng)左指針,直至找到一個(gè)符合題意的區(qū)間sums -= nums[left] # 移動(dòng)左指針前需要從counter中減少left位置字符的求和/計(jì)數(shù)left += 1 # 真正的移動(dòng)左指針,注意不能跟上面一行代碼寫(xiě)反# 到 while 結(jié)束時(shí),我們找到了一個(gè)符合題意要求的 子數(shù)組/子串res = max(res, right - left + 1) # 需要更新結(jié)果right += 1 # 移動(dòng)右指針,去探索新的區(qū)間return res

滑動(dòng)窗口中用到了左右兩個(gè)指針,它們移動(dòng)的思路是:以右指針作為驅(qū)動(dòng),拖著左指針向前走。右指針每次只移動(dòng)一步,而左指針在內(nèi)部while循環(huán)中每次可能移動(dòng)多步。右指針是主動(dòng)前移動(dòng),探索未知的新區(qū)域;左指針是被迫移動(dòng),負(fù)責(zé)尋找滿足題意的區(qū)間。

模板的整體思想是:

  • 定義兩個(gè)指針left和right,分別指向區(qū)間的開(kāi)頭和結(jié)尾,注意是閉區(qū)間;定義sums用來(lái)統(tǒng)計(jì)該區(qū)間內(nèi)的各個(gè)字符出現(xiàn)次數(shù);
  • 第一重while循環(huán)是為了判斷right指針的位置是否超出了數(shù)組邊界;當(dāng)right每次到了新位置,需要增加right指針的求和或計(jì)數(shù);
  • 第二重while循環(huán)是讓left指針向右移動(dòng)到[left,right]區(qū)間符合題意的位置;當(dāng)left每次移動(dòng)到新位置,需要減少left指針的求和或計(jì)數(shù);
  • 在第二重while循環(huán)之后,成功找到一個(gè)符合題意的[left,right]區(qū)間,題目要求最大的區(qū)間長(zhǎng)度,因此更新res為max(res,當(dāng)前區(qū)間的長(zhǎng)度);
  • right指針每次向右移動(dòng)一步,開(kāi)始探索新的區(qū)間;
  • 1004. 最大連續(xù)1的個(gè)數(shù) III

    https://leetcode-cn.com/problems/max-consecutive-ones-iii/

    解題思路

    重點(diǎn):題意轉(zhuǎn)換。把「最多可以把 K 個(gè) 0 變成 1,求僅包含 1 的最長(zhǎng)子數(shù)組的長(zhǎng)度」轉(zhuǎn)換為 「找出一個(gè)最長(zhǎng)的子數(shù)組,該子數(shù)組內(nèi)最多允許有 K 個(gè) 0 」。

    經(jīng)過(guò)上面的題意轉(zhuǎn)換,我們可知本題是求最大連續(xù)子區(qū)間,可以使用滑動(dòng)窗口方法。滑動(dòng)窗口的限制條件是:窗口內(nèi)最多有 K 個(gè) 0。

    代碼思路

    • 使用left和right兩個(gè)指針,分別指向滑動(dòng)窗口的左右邊界。
    • right主動(dòng)右移動(dòng):right指針每次移動(dòng)一步。當(dāng)A[right]為0,說(shuō)明滑動(dòng)窗口內(nèi)增加了一個(gè)0;
    • left被動(dòng)右移動(dòng):判斷此時(shí)窗口內(nèi)0的個(gè)數(shù),如果超過(guò)了K,則left指針被迫右移動(dòng),直至窗口內(nèi)的0的個(gè)數(shù)小于等于K為止。
    • 滑動(dòng)窗口長(zhǎng)度的最大值即為所求。

    class Solution {public int longestOnes(int[] A, int K) {int N = A.length;int res = 0;int left = 0, right = 0;int zeros = 0;while (right < N) {if (A[right] == 0)zeros ++;while (zeros > K) {if (A[left++] == 0) zeros --;}res = Math.max(res, right - left + 1);right ++;}return res;} }

    總結(jié)

    以上是生活随笔為你收集整理的LeetCode刷题:滑动窗口模板以及典型例题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成年人小视频在线观看 | 澳门黄色 | 亚洲无人区码一码二码三码的含义 | 亚洲欧美一区二区在线观看 | 不卡av一区 | 九草网 | 成人第一页| 在线国产小视频 | 巨胸挤奶视频www网站 | 国产女人高潮的av毛片 | 亚洲天堂一二三 | 天天操天天操天天操 | 神马午夜在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 999免费视频 | 黄色一级视频免费看 | 久久国产精品久久国产精品 | 久久久高潮 | 海角国产乱辈乱精品视频 | 福利色导航 | 95久久| 中文字幕无码av波多野吉衣 | 久久精品免费在线观看 | 高潮一区二区三区乱码 | 亚av| 快色在线| 欧美在线精品一区 | 日日爱669 | 青草伊人久久 | 色永久| 男女69视频| 国产成人无码性教育视频 | 欧美mv日韩mv国产网站app | 日产久久视频 | 这里只有精品66 | 黄色污网站在线观看 | 人妻少妇久久中文字幕 | 成人精品毛片 | 女女综合网 | 亚洲自拍成人 | 日韩经典在线观看 | 亚洲欧美激情图片 | 久久αv | 永久免费精品影视网站 | 青草久久久 | 久久精品国产欧美亚洲人人爽 | 日本特黄成人 | 亚洲欧美视频二区 | 日韩色视频在线观看 | av片手机在线观看 | 完全免费在线视频 | 久久综合久久鬼色 | 日韩中文字幕精品视频 | 免费看一级黄色大片 | 亚洲AV无码成人精品区麻豆 | 丰满岳乱妇一区二区三区 | www.色悠悠 | 国产精品久久久久久亚洲毛片 | 露出调教羞耻91九色 | 国产一区二区免费看 | 国产精品美女久久久久久 | 日韩中文一区二区 | 我和单位漂亮少妇激情 | 日韩一区二区在线看 | 国产在线激情 | 亚洲另类天堂 | 无码av免费毛片一区二区 | 久久久www成人免费无遮挡大片 | 最新超碰 | 男女性网站 | 亚洲在线资源 | 色婷婷色 | 久久久久久无码精品大片 | 少妇真实被内射视频三四区 | 日韩精品人妻中文字幕有码 | 牛牛精品一区 | 婷婷爱五月天 | 91视频你懂的| 91久久精品一区 | 精品视频在线免费 | 被扒开腿一边憋尿一边惩罚 | 樱桃成人精品视频在线播放 | 精品久久久噜噜噜久久久 | 欧美专区在线视频 | 成人免费网视频 | 色播视频在线观看 | 男女男精品网站 | 不卡中文字幕在线 | 亚洲精品三 | 720url在线观看免费版 | 伊人逼逼| 欧美黄色一区二区 | 亚洲视频五区 | 国产精品人妻一区二区三区 | 亚洲视频区 | 久久综合丁香 | 厕拍极品| 亚洲国产毛片 | 天天舔夜夜操 |