ID | Title | Difficulty | |
---|---|---|---|
Loading... |
862. Shortest Subarray with Sum at Least K
Hard
LeetCode
Array, Binary Search, Queue, Sliding Window, Heap (Priority Queue), Prefix Sum, Monotonic Queue
Problem
Given an integer array nums
and an integer k
, return the length of the shortest non-empty subarray of nums
with a sum of at least k
. If there is no such subarray, return -1
.
A subarray is a contiguous part of an array.
Example 1:
Input: nums = [1], k = 1
Output: 1
Example 2:
Input: nums = [1,2], k = 4
Output: -1
Example 3:
Input: nums = [2,-1,2], k = 3
Output: 3
Constraints:
- $1 <= nums.length <= 10^5$
- $-10^5 <= nums[i] <= 10^5$
- $1 <= k <= 10^9$
Code
209. Minimum Size Subarray Sum
class Solution {
public int shortestSubarray(int[] nums, int k) {
int res = nums.length + 1;
long[] sums = new long[nums.length + 1];
for (int i = 0; i < nums.length; i++) {
sums[i + 1] = sums[i] + nums[i];
}
Deque<Integer> queue = new LinkedList<>();
for (int i = 0; i <= nums.length; i++) {
while (queue.size() > 0 && sums[i] - sums[queue.getFirst()] >= k) {
res = Math.min(res, i - queue.pollFirst());
}
while (queue.size() > 0 && sums[i] <= sums[queue.getLast()]) {
queue.pollLast();
}
queue.addLast(i);
}
return res <= nums.length ? res : -1;
}
}
按 <- 键看上一题!
856. Score of Parentheses *
按 -> 键看下一题!
863. All Nodes Distance K in Binary Tree **