首页 > 其他 > 详细

秋叶收藏集

时间:2020-10-02 22:44:14      阅读:43      评论:0      收藏:0      [点我收藏+]

技术分享图片

动态规划

class Solution {
    public int minimumOperations(String leaves) {
        int n = leaves.length();

        int [][]state = new int[n][3];
        char[] leaveArr = leaves.toCharArray();  
        //状态0:在左边区域需要调整多少次
        //状态1:在中间区域需要调整多少次
        //状态2:在右边区域需要调整多少次
        state[0][0] = leaveArr[0] == ‘r‘? 0 : 1;
        //必须加否则类似"yry"的样例过不了
        state[0][1] = state[0][2] = state[1][2] = Integer.MAX_VALUE;
        //state[n-1][2] = leaveArr[n-1]
        int isYellow = 0;
        for(int i=1;i<n;i++){
            isYellow = leaveArr[i] == ‘r‘? 0 : 1;
            state[i][0] = state[i-1][0]+isYellow;
            //左中取最小
            state[i][1] = Math.min(state[i-1][0],state[i-1][1])+1-isYellow;
            //第三片叶子以及之后才可以在右边区域
            //中右取最小
            if(i>=2) state[i][2] = Math.min(state[i-1][2],state[i-1][1])+isYellow;
        }
       return state[n-1][2];
    }
}


秋叶收藏集

原文:https://www.cnblogs.com/cstdio1/p/13762829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!