【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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步