第 153 场双周赛——操作后最大活跃区段数 I
题目
题解
这题感觉样例给的不清楚,比赛的时候理解错了干不出来,这里的1不是连续的1,是所有的1,也就是当我们进行完那个操作之后统计出现了多少个1。那我们其实只要找出相邻两段0个数最多即可。
参考代码
class Solution {
public:
int maxActiveSectionsAfterTrade(string s) {
int n = s.size();
int ans = 0, mx = 0, cnt = 0, pre0 = -1e9;
for(int i = 0; i < n; i++) {
cnt++;
if(i == n - 1 || s[i] != s[i + 1]){
if(s[i] == '1'){
ans += cnt;
} else {
mx = max(mx, pre0 + cnt);
pre0 = cnt;
}
cnt = 0;
}
}
return ans + mx;
}
};

浙公网安备 33010602011771号