参考代码随想录:problems/0209.长度最小的子数组.md · programmercarl/leetcode-master(代码随想录出品) - Gitee.com
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
我的代码:
1 class Solution: 2 def minSubArrayLen(self, target: int, nums: List[int]) -> int: 3 temp_ans = 0 4 ans_len = float("inf") 5 i = 0 6 j = 0 7 length = len(nums) 8 while j < length: 9 temp_ans += nums[j] 10 while temp_ans >= target: 11 min_len = j - i + 1 12 if min_len == 1: 13 return min_len 14 ans_len = min(min_len, ans_len) 15 temp_ans -= nums[i] 16 i += 1 17 j += 1 18 return 0 if ans_len == float("inf") else ans_len
标准解法:
1 class Solution: 2 def minSubArrayLen(self, s: int, nums: List[int]) -> int: 3 # 定义一个无限大的数 4 res = float("inf") 5 Sum = 0 6 index = 0 7 for i in range(len(nums)): 8 Sum += nums[i] 9 while Sum >= s: 10 res = min(res, i-index+1) 11 Sum -= nums[index] 12 index += 1 13 return 0 if res==float("inf") else res

浙公网安备 33010602011771号