當前位置:
首頁 >
1、leetcode209 长度最小的子数组
發(fā)布時間:2025/3/19
12
豆豆
生活随笔
收集整理的這篇文章主要介紹了
1、leetcode209 长度最小的子数组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
leetcode209 長度最小的子數(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ù)組。
示例 2:
輸入:target = 4, nums = [1,4,4]
輸出:1
示例 3:
輸入:target = 11, nums = [1,1,1,1,1,1,1,1]
輸出:0
文章目錄
- leetcode209 長度最小的子數(shù)組
- 一、滑動窗口
- 二、滑動窗口模板
一、滑動窗口
class Solution {public int minSubArrayLen(int target, int[] nums) {int left=0; //左邊界int right=0;//右邊界int sum=0;int res=nums.length+1;//初始化是為了防止結果不存在while(right<nums.length){sum+=nums[right++];//讓右邊界進行移動while(sum>=target){res=Math.min(res,right-left);//求長度最小的子數(shù)組sum-=nums[left++];//左邊界進行移動} }return res==nums.length+1?0:res;} }二、滑動窗口模板
分享一個滑動窗口模板,是在leetcode上看到別人寫的,他是寫的python版,改成了Java版本,感覺挺好的,有利于理解滑動窗口思想。可以利用這個思想來嘗試一下leetcode1001 最大連續(xù)1的個數(shù)
public int findSubArray(int[] nums,int target){//數(shù)組/字符串長度int len=nums.length;//雙指針,表示當前遍歷的區(qū)間[left, right],閉區(qū)間int left=0, right = 0; //用于統(tǒng)計子數(shù)組/子區(qū)間是否有效,根據(jù)題目可能會改成求和/計數(shù)int sum = 0;//保存最大的滿足題目要求的 子數(shù)組/子串 長度int res = 0;//當右邊的指針沒有搜索到數(shù)組/字符串的結尾while (right<len){//增加當前右邊指針的數(shù)字/字符的求和/計數(shù)sum += nums[right] //此時需要一直移動左指針,直至找到一個符合題意的區(qū)間while 區(qū)間[left, right]不符合題意{//移動左指針前需要從counter中減少left位置字符的求和/計數(shù)sum -= nums[left];//真正的移動左指針,注意不能跟上面一行代碼寫反left++;}//到while 結束時,我們找到了一個符合題意要求的子數(shù)組/子串res = Math.max(res, right - left + 1) //需要更新結果right ++; //移動右指針,去探索新的區(qū)間}return res } 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的1、leetcode209 长度最小的子数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1、leetcode437 路和总径3
- 下一篇: 7、leetcode410 分割数组的最