leetcode 209 最小連續子陣列

2021-10-04 04:51:37 字數 1898 閱讀 6614

leetcode-209

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

示例:

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

輸出: 2

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

高階:

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

class solution(object):

def minsubarraylen(self, s, nums):

""":type s: int

:type nums: list[int]

:rtype: int

"""length = len(nums)+1

end, start = 0, 0

while(end < len(nums) and end >= start):

if sum(nums[start:end + 1]) < s:

end += 1

else :

length = min(length, end - start + 1)

start += 1

return length if length != len(nums)+1 else 0

class solution(object):

def minsubarraylen(self, s, nums):

""":type s: int

:type nums: list[int]

:rtype: int

"""if nums == :return 0

length = len(nums) +1

subsum = [0]*len(nums)

subsum[0] = nums[0]

for i in range(1,len(subsum)):

subsum[i] = (subsum[i-1]+nums[i])

end, start = 0, 0

while(end < len(nums) and end >= start):

if subsum[end]-subsum[start]+nums[start] < s:

end += 1

else :

length = min(length, end - start + 1)

start += 1

return length if length != len(nums)+1 else 0

class solution(object):

def minsubarraylen(self, s, nums):

""":type s: int

:type nums: list[int]

:rtype: int

if nums == :return 0

length = len(nums) +1

sum = 0

left = 0

for right in range(len(nums)):

sum +=nums[right]

while sum>=s:

length = min(length,right-left+1)

sum -=nums[left]

left+=1

return length if length != len(nums)+1 else 0

leetcode 209 長度最小的陣列

題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。參考 負雪明燭 class solution object def minsubarraylen self,s,nums type s int ty...

LeetCode 209 長度最小的子陣列

題目鏈結 題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。解決方法 兩種方法 ...

Leetcode209 長度最小的子陣列

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