Skip to content

Commit 07814c5

Browse files
committed
Nov 17
1 parent 39d717e commit 07814c5

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

2024-11-November-LeetCoding-Challenge/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
| November 14 | [2064. Minimized Maximum of Products Distributed to Any Store](https://leetcode.com/problems/minimized-maximum-of-products-distributed-to-any-store/) | Medium | Solved |
2020
| November 15 | [1574. Shortest Subarray to be Removed to Make Array Sorted](https://leetcode.com/problems/shortest-subarray-to-be-removed-to-make-array-sorted/) | Medium | Unsolved |
2121
| November 16 | [3254. Find the Power of K-Size Subarrays I](https://leetcode.com/problems/find-the-power-of-k-size-subarrays-i/) | Medium | Solved |
22-
| November 17 | []() | | |
22+
| November 17 | [862. Shortest Subarray with Sum at Least K](https://leetcode.com/problems/shortest-subarray-with-sum-at-least-k/) | Hard | Solved |
2323
| November 18 | []() | | |
2424
| November 19 | []() | | |
2525
| November 20 | []() | | |
@@ -39,4 +39,4 @@
3939
| --- | --- | --- | --- |
4040
| Easy | 3 | 3 | 0 |
4141
| Medium | 13 | 6 | 7 |
42-
| Hard | 0 | 0 | 0 |
42+
| Hard | 1 | 1 | 0 |
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from collections import deque
2+
from itertools import accumulate
3+
from typing import List
4+
5+
6+
class Solution:
7+
def shortestSubarray(self, nums: List[int], k: int) -> int:
8+
ps = [0] + list(accumulate(nums))
9+
queue = deque()
10+
min_length = float('inf')
11+
for j in range(len(ps)):
12+
while queue and ps[j] - ps[queue[0]] >= k:
13+
min_length = min(min_length, j - queue.popleft())
14+
while queue and ps[j] <= ps[queue[-1]]:
15+
queue.pop()
16+
queue.append(j)
17+
return min_length if min_length != float('inf') else -1
18+
19+
20+
def main():
21+
nums = [1]
22+
k = 1
23+
assert Solution().shortestSubarray(nums, k) == 1
24+
25+
nums = [1, 2]
26+
k = 4
27+
assert Solution().shortestSubarray(nums, k) == -1
28+
29+
nums = [2, -1, 2]
30+
k = 3
31+
assert Solution().shortestSubarray(nums, k) == 3
32+
33+
34+
if __name__ == '__main__':
35+
main()

0 commit comments

Comments
 (0)