mirror of https://github.com/doocs/leetcode.git
30 lines
771 B
Java
30 lines
771 B
Java
class Solution {
|
|
public int minSubArrayLen(int target, int[] nums) {
|
|
int n = nums.length;
|
|
long[] s = new long[n + 1];
|
|
for (int i = 0; i < n; ++i) {
|
|
s[i + 1] = s[i] + nums[i];
|
|
}
|
|
int ans = n + 1;
|
|
for (int i = 0; i <= n; ++i) {
|
|
int j = search(s, s[i] + target);
|
|
if (j <= n) {
|
|
ans = Math.min(ans, j - i);
|
|
}
|
|
}
|
|
return ans <= n ? ans : 0;
|
|
}
|
|
|
|
private int search(long[] nums, long x) {
|
|
int l = 0, r = nums.length;
|
|
while (l < r) {
|
|
int mid = (l + r) >> 1;
|
|
if (nums[mid] >= x) {
|
|
r = mid;
|
|
} else {
|
|
l = mid + 1;
|
|
}
|
|
}
|
|
return l;
|
|
}
|
|
} |