为了能到远方,脚下的每一步都不能少.|

fishcanfly

园龄:8年10个月粉丝:0关注:4

【5229. 拼接数组的最大分数】动态规划

复制代码
class Solution {
    public int maximumsSplicedArray(int[] nums1, int[] nums2) {
        int n  = nums1.length;
        int[] b = new int[n];
        int[] c = new int[n];

        dp(nums1,nums2,b);
        dp(nums2,nums1,c);

        int sum1 = 0;
        int sum2 = 0;
        for (int i = 0; i < n; i++) {
            sum1 += nums1[i];
            sum2 += nums2[i];
        }
        int max = 0;
        int dpmax = 0;
        for (int i = 0; i < n ; i++) {
            if( b[i] > dpmax){
                dpmax = b[i];
            }
        }

        max = dpmax + sum2;

        dpmax = 0;
        for (int i = 0; i < n ; i++) {
            if( c[i] > dpmax){
                dpmax = c[i];
            }
        }

        max = Math.max(max,dpmax+sum1);

        return max;

    }

    public void dp(int[] nums1,int[] nums2,int[] b){
        int n  = nums1.length;
        int last = 0;
        for (int i = 0; i < n; i++) {
            if( last < 0 ){
                b[i] = nums1[i] - nums2[i];
            }else{
                b[i] = last + nums1[i] - nums2[i];
            }
            last = b[i];
        }
    }
}
复制代码

 

本文作者:fishcanfly

本文链接:https://www.cnblogs.com/fishcanfly/p/16414204.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   fishcanfly  阅读(17)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起