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

【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】

這篇具有很好參考價值的文章主要介紹了【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

給定一個含有 n 個正整數(shù)的數(shù)組和一個正整數(shù) target 。
找出該數(shù)組中滿足其和 ≥ target 的長度最小的 連續(xù)子數(shù)組 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0 。

參考【代碼隨想錄】

示例 1:

輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數(shù)組 [4,3] 是該條件下的長度最小的子數(shù)組。

示例 3:

輸入:target = 11, nums = [1,1,1,1,1,1,1,1]
輸出:0

提示:

1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105

思路

滑動窗口
接下來就開始介紹數(shù)組操作中另一個重要的方法:滑動窗口。

所謂滑動窗口,就是不斷的調(diào)節(jié)子序列的起始位置和終止位置,從而得出我們要想的結(jié)果。

首先要思考 如果用一個for循環(huán),那么應(yīng)該表示 滑動窗口的起始位置,還是終止位置。

如果只用一個for循環(huán)來表示 滑動窗口的起始位置,那么如何遍歷剩下的終止位置?

所以 只用一個for循環(huán),那么這個循環(huán)的索引,一定是表示 滑動窗口的終止位置。

那么問題來了, 滑動窗口的起始位置如何移動呢?

這里還是以題目中的示例來舉例,s=7, 數(shù)組是 2,3,1,2,4,3,來看一下查找的過程:

【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】,Leetcode刷題篇,leetcode,算法,數(shù)據(jù)結(jié)構(gòu),滑動窗口,考研
最后找到 4,3 是最短距離。

其實從動畫中可以發(fā)現(xiàn)滑動窗口也可以理解為雙指針法的一種!只不過這種解法更像是一個窗口的移動,所以叫做滑動窗口更適合一些。

在本題中實現(xiàn)滑動窗口,主要確定如下三點:

窗口內(nèi)是什么?
如何移動窗口的起始位置?
如何移動窗口的結(jié)束位置?
窗口就是 滿足其和 ≥ s 的長度最小的 連續(xù) 子數(shù)組。

窗口的起始位置如何移動:如果當(dāng)前窗口的值大于s了,窗口就要向前移動了(也就是該縮小了)。文章來源地址http://www.zghlxwxcb.cn/news/detail-655371.html

代碼實現(xiàn)

//@i want to舞動乾坤 2023/08/13
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i=0;
        int result =INT32_MAX; //結(jié)果,要取得盡量大一點
        int sum=0;//定義累加和
        int sublength=0;
        for(int j=0;j<nums.size();j++){
            sum+=nums[j];
           while(sum>=target)//如果滿足
            {
               sublength=j-i+1;//計算子數(shù)組的長度
               result=result>sublength?sublength:result;//這里就是為什么result取得大的原因了,這步驟也可以改成: result=min(result,j-i+1);從而減少內(nèi)存
               sum-=nums[i++];//滑動窗口的精髓,動態(tài)更新sum的大小

            }
        }

        return result==INT32_MAX? 0 : result;//如果result沒有變化,代表沒有進入while循環(huán),一直沒有找到大于等于sum的數(shù)。
    }
};

到了這里,關(guān)于【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 代碼隨想錄【數(shù)組】----->有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    代碼隨想錄【數(shù)組】----->有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    題目LeetCode977. 有序數(shù)組的平方 由于平方后 兩邊的元素最大,中間的元素最小 ,所以可以使用雙指針。 定義left指向原數(shù)組最左邊,right指向原數(shù)組最右邊 比較left元素的平方和right元素的平方 left元素平方大于right元素平方,將left元素平方放在結(jié)果集最后,left++ right元素平方

    2023年04月27日
    瀏覽(30)
  • 【C++代碼】有序數(shù)組的平方,長度最小的子數(shù)組,螺旋矩陣 II--代碼隨想錄

    【C++代碼】有序數(shù)組的平方,長度最小的子數(shù)組,螺旋矩陣 II--代碼隨想錄

    題目:有序數(shù)組的平方 給你一個按 非遞減順序 排序的整數(shù)數(shù)組 nums ,返回 每個數(shù)字的平方 組成的新數(shù)組,要求也按 非遞減順序 排序。 題解 數(shù)組其實是有序的, 只不過負數(shù)平方之后可能成為最大數(shù)了。那么數(shù)組平方的最大值就在數(shù)組的兩端, 不是最左邊就是最右邊,不

    2024年02月11日
    瀏覽(47)
  • 代碼隨想錄第六十五天——尋找圖中是否存在路徑,冗余連接,冗余連接||

    并查集常用來解決連通性問題,主要有兩個功能: 將兩個元素添加到一個集合中 判斷兩個元素在不在同一個集合 通過模板可知,并查集主要有三個功能: 尋找根節(jié)點,函數(shù):find(int u),也就是判斷這個節(jié)點的祖先節(jié)點是哪個 將兩個節(jié)點接入到同一個集合,函數(shù):join(int u,

    2024年01月16日
    瀏覽(24)
  • 代碼隨想錄day2|有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    代碼隨想錄day2|有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    前言:今天去校醫(yī)院拔了兩顆牙,太痛了,今天寫的博客就比較水。 所謂滑動窗口,就是不斷的調(diào)節(jié) 子序列的起始位置和終止位置 ,從而得出我們要想的結(jié)果。

    2024年02月01日
    瀏覽(21)
  • 代碼隨想錄Leetcode70. 爬樓梯

    代碼隨想錄Leetcode70. 爬樓梯

    ? ? ? ? 空間復(fù)雜度為O(N),如果想要優(yōu)化空間復(fù)雜度,則只用三個變量進行狀態(tài)轉(zhuǎn)移也可以,參考 代碼隨想錄 Leetcode509. 斐波那契數(shù)-CSDN博客

    2024年02月19日
    瀏覽(97)
  • 代碼隨想錄Leetcode 343. 整數(shù)拆分

    代碼隨想錄Leetcode 343. 整數(shù)拆分

    ? ? ? ? dp[i]表示i所能拆分的最大乘積,則dp[i] 與dp[i - 1]的遞推公式是: ? ? ? ? ? ? ? ? max( 1~n * dp[n ~ 1])

    2024年02月21日
    瀏覽(100)
  • 代碼隨想錄 LeetCode數(shù)組篇 二分查找

    代碼隨想錄 LeetCode數(shù)組篇 二分查找

    # (簡單)704. 二分查找 題目鏈接 代碼隨想錄 - 二分查找思路 二分查找,思路很簡單,但是在while循環(huán)left和right的比較是寫=還是,還有right=mid還是right=mid-1容易混淆 需要想清楚對區(qū)間的定義,是[left,right],還是[left,right) (版本一,左閉右閉版本) (版本二,左閉右開) 題目

    2024年02月02日
    瀏覽(93)
  • 代碼隨想錄 Leetcode763. 劃分字母區(qū)間
  • 代碼隨想錄 Leetcode18. 四數(shù)之和

    代碼隨想錄 Leetcode18. 四數(shù)之和

    ? ? ? ? 不行了,今天做了太多n數(shù)之和要吐了,太惡心了,一堆剪枝,去重太惡心人了。最后還是照著卡哥的改

    2024年01月17日
    瀏覽(97)
  • 【代碼隨想錄-Leetcode第二題:27.移除元素】

    給你一個數(shù)組 nums 和一個值 val,你需要 原地 移除所有數(shù)值等于 val 的元素,并返回移除后數(shù)組的新長度。 不要使用額外的數(shù)組空間,你必須僅使用 O(1) 額外空間并 原地 修改輸入數(shù)組。 元素的順序可以改變。你不需要考慮數(shù)組中超出新長度后面的 樣例:示例 1: 解釋:函數(shù)

    2024年02月14日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包