前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.K次串联后最大子数组之和
题目链接: 1191. K 次串联后最大子数组之和 - 力扣(LeetCode)
题面:
附上大佬代码:
java
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;
}
}
后言
上面是动态规划相关的习题,共勉