1 Star 0 Fork 0

MetaverseMobile/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
1004. 最大连续1的个数 III LTE.cpp 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
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);
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/MetaverseMobile/leetcode.git
[email protected]:MetaverseMobile/leetcode.git
MetaverseMobile
leetcode
leetcode
main

搜索帮助