代码拉取完成,页面将自动刷新
#include<iostream>
#include<vector>
#include<queue>
#include<deque>
#include<algorithm>
using namespace std;
// class Solution {
// public:
// int shortestSubarray(vector<int>& nums, int k) {
// int summ = 0;
// int count = INT_MAX;
// int n = nums.size();
// queue<int> que;
// int i = 0;
// while(i<n)
// {
// if(summ<k)
// {
// que.push(nums[i]);
// summ+=nums[i];
// i++;
// }
// if(summ>=k)
// {
// count = count>que.size()?que.size():count;
// //count = min(que.size(),count);
// que.pop();
// summ-=que.front();
// }
// }
// if(summ<k) return -1;
// return count;
// }
// };
class Solution {
public:
int shortestSubarray(vector<int>& nums, int k) {
int n = nums.size();
vector<long> preSumArr(n + 1);
for (int i = 0; i < n; i++) {
preSumArr[i + 1] = preSumArr[i] + nums[i];
}
int res = n + 1;
deque<int> qu;
for (int i = 0; i <= n; i++) {
long curSum = preSumArr[i];
while (!qu.empty() && curSum - preSumArr[qu.front()] >= k) {
res = min(res, i - qu.front());
qu.pop_front();
}
while (!qu.empty() && preSumArr[qu.back()] >= curSum) {
qu.pop_back();
}
qu.push_back(i);
}
return res < n + 1 ? res : -1;
}
};
int main()
{
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。