当前位置: 首页 > news >正文

lc1031-两个非重叠子数组的最大和

题目描述

  • 给定一个数组和两个长度,找到两个符合长度的不重合的连续子数组,使其和最大

示例

输入:nums = [0,6,5,2,2,5,1,9,4], firstLen = 1, secondLen = 2
输出:20
解释:[6, 5] + [9]
输入:nums = [3,8,1,3,2,1,8,9,0], firstLen = 3, secondLen = 2
输出:29
输入:nums = [2,1,5,6,0,9,5,0,3,8], firstLen = 4, secondLen = 3
输出:31

题解

  • 思路:前缀和
    • 不妨设 子数组a 在前,子数组b 在后
    • 当 b 固定时,a 在前面范围中取最大,就得到了当前 b 对应的最大值
    • 对于每一个 b,都找到最大的 a,最后取一个 max 即可
    • 又是非常像第一题《两数之和》
func maxSumTwoNoOverlap(nums []int, firstLen int, secondLen int) int {return max(help(nums, firstLen, secondLen), help(nums, secondLen, firstLen))
}func help(nums []int, a, b int) (res int) {n := len(nums)s := make([]int, n + 1)for i := 1; i <= n; i ++ { s[i] = s[i - 1] + nums[i - 1] }for i, maxa := a + b, 0; i <= n; i ++ {maxa = max(maxa, s[i - b] - s[i - b - a])res = max(res, maxa + s[i] - s[i - b])}return
}
http://www.hskmm.com/?act=detail&tid=8951

相关文章:

  • Segment Analytics-iOS SDK - 专业用户行为追踪解决方案
  • 我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi - 行人-
  • 使用 Rust 与 Tesseract OCR 识别英文数字验证码
  • 别迷茫了!计算机大一新生这样做,四年后远超同龄人 - 编程实战派
  • 解决ifconfig命令没有显示ens33 finalshell连接不上虚拟机
  • 什么情况下需要用到xargs
  • Office 2024安装包专业增强版超详细下载安装教程
  • 关于 pdfminer 的安装 - 指南
  • c/c++实现有栈协程
  • Day17冒泡排序
  • 高阶 INTJ 5w4 整合到 8,是完整的过程,从研究到实用(豆包)
  • 几B大模型的空间存储大小
  • hbase安装与配置
  • 发喷山火(volcano)+CF2119F Volcanic Eruptions 解题报告
  • matlab免费下载安装激活教程(附安装包下载)MATLAB R2025a超详细下载安装教程
  • Spring Boot + flowable 完美结合,快速实现工作流 - 教程
  • Pyfluent 执行Meshing工作流
  • EF Core 与 MySQL:日志和调试详解
  • 使用镜像源解决github拉取代码问题 - GD
  • 日记
  • 主机连接虚拟机和hbase的命令
  • 类和面向对象
  • PHP转Go系列 | PHP8 这些新函数让你眼前一亮
  • 代码随想录算法训练营第二天 |209.长度最小的子数组,59. 螺旋矩阵 II
  • mac更新or安装homebrew失败
  • Typescript中闭包的原理 - 教程
  • CF2048H Kevin and Strange Operation
  • Hadoop本地库加载问题分析与解决方案
  • GO基础总结
  • Visual Studio 离线安装0x80131509