代码拉取完成,页面将自动刷新
class Solution {
public:
int longestOnes(vector<int>& A, int K) {
int head = 0;
int tail = 0;
int nextStep = 0;
/* 扫描到的最大长度 */
int maxLen = 0;
/* 当前序列长度 */
int len = 0;
int leftFill = K;
int last = 0;
while (head < A.size()) {
if (tail == A.size() || (A[tail] == 0 && leftFill == 0)) {
maxLen = max(len, maxLen);
if (head == nextStep) {
len = 0;
head = tail;
nextStep = head;
}
else {
len = 1;
head = nextStep;
tail = head;
}
leftFill = K;
}
else if (A[tail] == 0) {
leftFill--;
len++;
}
else if (A[tail] == 1) {
len++;
if (last == 0 && head == nextStep)
nextStep = tail;
}
if (tail < A.size())
last = A[tail];
tail++;
}
maxLen = max(len, maxLen);
int re = A.size() - 1;
len = 0;
while (re > 0 && K > 0) {
switch(A[re]) {
case 0:
K--;
default:
break;
}
len++;
re--;
}
return max(maxLen, len);
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。