zoukankan      html  css  js  c++  java
  • 926. 将字符串翻转到单调递增

    就是个dp

    如果s[i] == 0,

    s[i]还想是0

    则i - 1必定为0, dp[i][0] = dp[i - 1][0];

     s[i]想变成1,则i - 1是0是1无所谓

     dp[i][1] = min(dp[i - 1][0], dp[i - 1][1]) + 1

    如果s[i] == 1,与上述情况相反即可

    class Solution {
    public:
    
    
        int minFlipsMonoIncr(string s) {
            int len = s.length();
            int dp[len + 1][2];
            memset(dp, 0, sizeof(dp));
            int cnt = 0, flag = 0;
            for(int i = 0; i < len; i++)
            {
                if(s[i] == '1') cnt++;
                if(flag == 0 && cnt == 1)
                {
                    flag = 1;
                    dp[i][0] = 1;
                    dp[i][1] = 0;
                }
                else if(cnt == 0) continue;
                else
                {
                    if(s[i] == '0')
                    {
                        dp[i][0] = dp[i - 1][0];
                        dp[i][1] = min(dp[i - 1][0], dp[i - 1][1]) + 1;
                    }
                    else
                    {
                        dp[i][0] = dp[i - 1][0] + 1;
                        dp[i][1] = min(dp[i - 1][0], dp[i - 1][1]);
                    }
                }
            }
            return min(dp[len - 1][0], dp[len - 1][1]);
    
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    Codeforces Round #717 (Div. 2)
    Codeforces Round #716 (Div. 2)
    atCoder Regular Contest 117
    Codeforces Round #715 (Div. 2)
    牛客挑战赛49
    从零开始搭建webpack应用
    扫盲:npm
    MYSQL安装
    Int和integer区别
    关于JDK配置以及DOS窗口执行指令
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15585157.html
Copyright © 2011-2022 走看看