Given an array of positive integers nums and a positive integer target, return the minimal length of a
whose sum is greater than or equal to target. If there is no such subarray, return 0 instead.
Example 1:
Input: target = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: The subarray [4,3] has the minimal length under the problem constraint.
Example 2:
Input: target = 4, nums = [1,4,4]
Output: 1
Example 3:
Input: target = 11, nums = [1,1,1,1,1,1,1,1]
Output: 0
Constraints:
- 1 <= target <= 109
- 1 <= nums.length <= 105
- 1 <= nums[i] <= 104
Follow up: If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log(n)).
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
ans=len(nums)+1
total=left=right=0
for i in range(len(nums)):
total+=nums[right]
while total>=target:
ans=min(ans, right-left+1)
total-=nums[left]
left+=1
right+=1
return ans if sum(nums)>=target else 0
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
1570. Dot Product of Two Sparse Vectors (0) | 2023.04.11 |
---|---|
1265. Print Immutable Linked List in Reverse (0) | 2023.04.11 |
229. Majority Element II (0) | 2023.04.04 |
287. Find the Duplicate Number (0) | 2023.04.04 |
62. Unique Paths (0) | 2023.04.04 |