摘要:雙指針復雜度時間空間思路我們用兩個指針維護一個窗口,保證這個窗口的內的和是小于目標數的。如果和仍小于目標數,則將窗口右邊界右移。另外,如果左邊界大于右邊界時,說明最短子串的長度已經小于等于,我們就不用再查找了。
Minimum Size Subarray Sum
雙指針 復雜度Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn"t one, return 0 instead.
For example, given the array [2,3,1,2,4,3] and s = 7, the subarray [4,3] has the minimal length under the problem constraint.
時間 O(N) 空間 O(1)
思路我們用兩個指針維護一個窗口,保證這個窗口的內的和是小于目標數的。如果新來的數加上后,和大于目標,則比較下當前窗口長度和最短窗口長度,窗口左邊界右移。如果和仍小于目標數,則將窗口右邊界右移。注意這里退出的條件,右邊界是小于等于長度,因為我們窗口到了最右側時,還需要繼續左移左邊界來看有沒有更優的解法。另外,如果左邊界大于右邊界時,說明最短子串的長度已經小于等于1,我們就不用再查找了。
注意循環的判斷條件是right <= nums.length && left <= right
代碼public class Solution { public int minSubArrayLen(int s, int[] nums) { if(nums.length == 0) return 0; int left = 0, right = 0, sum = 0, minLen = nums.length + 1; while(right <= nums.length && left <= right){ if(sum < s){ // 當右邊界等于長度時,我們要多等一輪,等待左邊界左移,這時候不能加 if(right < nums.length){ sum += nums[right]; } right++; } else { // 當和大于等于目標時,檢查長度并左移邊界 minLen = Math.min(minLen, right - left); sum -= nums[left]; left++; } } return minLen <= nums.length ? minLen : 0; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66174.html
Problem Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isnt one, return 0 instead. Example: Input: s =...
摘要:如果不存在符合條件的連續子數組,返回。示例輸入輸出解釋子數組是該條件下的長度最小的連續子數組。截取從索引到索引的數組,該數組之和若小于,則繼續后移,直到大于等于。記錄與差值返回的目標數。之后后移一位繼續刷新新數組。 公眾號: 愛寫bug(ID:icodebugs)作者:愛寫bug 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組...
摘要:如果不存在符合條件的連續子數組,返回。示例輸入輸出解釋子數組是該條件下的長度最小的連續子數組。截取從索引到索引的數組,該數組之和若小于,則繼續后移,直到大于等于。記錄與差值返回的目標數。之后后移一位繼續刷新新數組。 公眾號: 愛寫bug(ID:icodebugs)作者:愛寫bug 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組...
摘要:如果不存在符合條件的連續子數組,返回。示例輸入輸出解釋子數組是該條件下的長度最小的連續子數組。截取從索引到索引的數組,該數組之和若小于,則繼續后移,直到大于等于。記錄與差值返回的目標數。之后后移一位繼續刷新新數組。 算法是一個程序的靈魂 公眾號:愛寫bug(ID:icodebugs)作者:愛寫bug 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的...
摘要:如果不存在符合條件的連續子數組,返回。示例輸入輸出解釋子數組是該條件下的長度最小的連續子數組。截取從索引到索引的數組,該數組之和若小于,則繼續后移,直到大于等于。記錄與差值返回的目標數。之后后移一位繼續刷新新數組。 算法是一個程序的靈魂 公眾號:愛寫bug(ID:icodebugs)作者:愛寫bug 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的...
閱讀 2404·2021-10-14 09:43
閱讀 2435·2021-09-09 09:34
閱讀 1601·2019-08-30 12:57
閱讀 1198·2019-08-29 14:16
閱讀 718·2019-08-26 12:13
閱讀 3201·2019-08-26 11:45
閱讀 2282·2019-08-23 16:18
閱讀 2652·2019-08-23 15:27