力扣动态规划-9【算法学习day.103】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

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;
  }
}

后言

上面是动态规划相关的习题,共勉

相关推荐
金銀銅鐵19 分钟前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
love在水一方1 小时前
VLN 入门学习计划 —— 基于 InternNav
学习
野生技术架构师2 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展
_深海凉_2 小时前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
小袁拒绝摆烂2 小时前
多表关联大平层转JSON树形结构
java·json
ja哇3 小时前
大厂面试高频八股
java·面试·职场和发展
踩坑记录3 小时前
leetcode hot100 寻找两个正序数组的中位数 hard 二分查找 双指针
leetcode
旖-旎3 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰3 小时前
C++快速幂完整实战讲解
算法·决策树·机器学习