第 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号