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...