前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.K次串联后最大子数组之和
题目链接:1191. K 次串联后最大子数组之和 - 力扣(LeetCode)
题面:
附上大佬代码:
class Solution {public int kConcatenationMaxSum(int[] arr, int k) {if (arr == null || arr.length == 0) return 0;long maxOfEnd = arr[0] > 0 ? arr[0] : 0L, maxSoFar = maxOfEnd, sum = arr[0];for (int i = 1; i < Math.min(k, 2) * arr.length; i++) {maxOfEnd = Math.max(maxOfEnd + arr[i % arr.length], arr[i % arr.length]);maxSoFar = Math.max(maxOfEnd, maxSoFar);if (i < arr.length) sum += arr[i];}if (sum > 0 && k > 2) {long r = (sum * (k - 2)) % 1000000007;maxSoFar += r;}return (int) maxSoFar % 1000000007;}
}
后言
上面是动态规划相关的习题,共勉