209 長度最小的子陣列

2021-09-26 10:23:41 字數 1011 閱讀 2810

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

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

輸出: 2

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

高階:如果你已經完成了o(n) 時間複雜度的解法, 請嘗試 o(n log n) 時間複雜度的解法。

nlogn的做法:

class solution:

def minsubarraylen(self, s: int, nums) -> int:

l=len(nums)

if not l:

return 0

sums=[0 for i in range(l+1)]

i,sums[1]=1,nums[0]

res=float('inf')

for x in nums:

sums[i]=sums[i-1]+x

i+=1

for i in range(l):

le,ri=i+1,l

while le=s:

res=min(res,le-i)

return res if res!=float('inf') else 0

n的做法:

class solution:

def minsubarraylen(self, s: int, nums) -> int:

l=len(nums)

if not l:

return 0

sums,le,ri,res=0,0,0,float('inf')

while le=s:

res=min(res,ri-le)

sums-=nums[le]

le+=1

return res if res!=float('inf') else 0

209 長度最小的子陣列

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

209 長度最小的子陣列

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

209 長度最小的子陣列

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