長度最小的子陣列

2021-10-19 22:08:24 字數 1031 閱讀 6042

給定乙個含有 n 個正整數的陣列和乙個正整數 target 。

找出該陣列中滿足其和 ≥ target 的長度最小的 連續子陣列 [numsl, numsl+1, …, numsr-1, numsr],並返回其長度。如果不存在符合條件的子陣列,返回 0 。

示例 1:

輸入:target = 7, nums = [2,3,1,2,4,3]

輸出:2

解釋:子陣列 [4,3] 是該條件下的長度最小的子陣列。

示例 2:

輸入:target = 4, nums = [1,4,4]

輸出:1

示例 3:

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

輸出:0

高階:

如果你已經實現 o(n) 時間複雜度的解法, 請嘗試設計乙個 o(n log(n)) 時間複雜度的解法。

解法一:滑動視窗

每掃瞄乙個數就加乙個數進來,如果和大於target,就把最左邊的數移出去,並計算子陣列長度

class

solution

}return min == integer.max_value ?

0: min;

//以防所有陣列和都< target

}}

解法二:二分法

arrays.binarysearch()返回值為負的問題

class

solution

for(

int i=

1;i<=n;i++

)//這裡不能用else,因為經過上面的轉換後還要下面的判斷

if(res<=n)

}return min == integer.max_value ?

0: min;

}}

長度最小的子陣列

方法 1 暴力 想法按照題目要求直接求。把所有可能的子陣列求和並更新 textans 直到我們找到最優子陣列且和滿足 text geq textsum s 演算法初始化 text textans int max 用變數 ii 從左到右遍歷陣列 用變數 jj 從當前元素到陣列尾部遍歷 將 ii 到 j...

長度最小的子陣列

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...

長度最小的子陣列

問題 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。分析 暴力法 求出每個子陣列的和...