長度最小的子數(shù)組 Minimum Size Subarray Sum

題目: LeetCode 209. 長度最小的子數(shù)組
給定一個含有 n 個正整數(shù)的數(shù)組和一個正整數(shù) s ,找出該數(shù)組中滿足其和 ≥ s 的長度最小的連續(xù)子數(shù)組。如果不存在符合條件的連續(xù)子數(shù)組,返回 0。
示例:
輸入: s = 7, nums = [2,3,1,2,4,3]
輸出: 2
解釋: 子數(shù)組 [4,3] 是該條件下的長度最小的連續(xù)子數(shù)組。
// 暴力解法
// 該方法在 Leetcode 中會超時!
// 時間復雜度: O(n^3)
// 空間復雜度: O(1)
public static int minSubArrayLen1(int s, int[] nums) {
if(s <= 0 || nums == null){
throw new IllegalArgumentException("Illigal Arguments");
}
int res = nums.length + 1;
for(int l = 0;l< nums.length;l++){
for(int r = l;r<nums.length;r++){
int sum = 0;
for(int i = l;i<=r;i++){
sum = sum + nums[i];
}
if(sum >= s){
res = Math.min(res,r - l + 1);
}
}
}
if(res == nums.length + 1){
return 0;
}
return res ;
}

// 優(yōu)化暴力解
// 時間復雜度: O(n^2)
// 空間復雜度: O(n)
public static  int minSubArrayLen2(int s, int[] nums) {
    if(s <=0 || nums == null){
        throw new IllegalArgumentException("Illigal Arguments");
    }
    int[] sums = new int[nums.length + 1];
    sums[0] = 0;
    for(int i = 1;i<=nums.length;i++){
        sums[i] = sums[i-1] + nums[i-1];
    }
    int res = nums.length + 1;
    for(int l = 0;l< nums.length;l++){
        for(int r = l;r<nums.length;r++){
            if(sums[r+1] - sums[l] >= s){
                res = Math.min(res,r - l + 1);
            }
        }
    }
    if(res == nums.length + 1){
        return 0;
    }
    return res ;
}

// 滑動窗口的思路

// 時間復雜度: O(n)
// 空間復雜度: O(1)
public static int minSubArrayLen3(int s, int[] nums) {
if(s <=0 || nums == null){
throw new IllegalArgumentException("Illigal Arguments");
}
int l =0 ;
int r = -1;
int res = nums.length + 1;
int sums = 0;
while(l < nums.length){
if(r + 1<nums.length&&sums<s){
sums += nums[++r];
}else{
sums -= nums[l++];
}
if(sums >= s){
res = Math.min(res,r - l + 1);
}
}
if(res == nums.length + 1){
return 0;
}
return res;
}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,355評論 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評論 0 2
  • 在C語言中,五種基本數(shù)據類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,039評論 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,204評論 0 3
  • 1.批量處理gotty的腳本目前在在開發(fā)環(huán)境使用 使用定時job構建有個小問題,在子進程里查詢不到gotty的進程...
    Broom閱讀 218評論 0 0

友情鏈接更多精彩內容