13 長度最小的子陣列

2021-10-07 14:20:48 字數 1044 閱讀 1959

給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的連續子陣列,並返回其長度。如果不存在符合條件的連續子陣列,返回 0。

示例:輸入:s = 7, nums = [2,3,1,2,4,3]

輸出:2

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

定義兩個指標 start 和 end 分別表示子陣列的開始位置和結束位置,維護變數sum 儲存子陣列中的元素和(即從 nums[start] 到 nums[end] 的元素和)。

初始狀態下,start 和 end 都指向下標 0,sum 的值為 0。

每一輪迭代,將nums[end] 加到sum,如果sum≥s,則更新子陣列的最小長度(此時子陣列的長度是end−start+1),然後將nums[start] 從sum 中減去並將start 右移,直到sumclass

solution

:def

minsubarraylen

(self, s:

int, nums: list[

int])-

>

int:

# 雙指標

# 如果陣列為0,則返回0

ifnot nums:

return

0# 初始化引數

長度最小的子陣列

方法 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 是該條件下的長度最小的連續子陣列。分析 暴力法 求出每個子陣列的和...