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

千问 LeetCode 3077. K 个不相交子数组的最大能量值 Go实现

以下是 LeetCode 3077. K 个不相交子数组的最大能量值 的 Go 语言实现:

func maximumStrength(nums []int, k int) int64 {
n := len(nums)

// 1. 计算前缀和数组,方便快速求取子数组的和
sum := make([]int64, n+1)
for i := 1; i <= n; i++ {
sum[i] = sum[i-1] + int64(nums[i-1])
}

// 2. 定义 dp 数组:dp[i][j] 表示前 j 个元素中选出 i 个不相交子数组的最大能量值
dp := make([][]int64, k+1)
for i := 0; i <= k; i++ {
dp[i] = make([]int64, n+1)
}

// 3. 动态规划填表
for i := 1; i <= k; i++ {
// 划分 i 个子数组至少需要 i 个元素,i-1 个元素无法划分,初始化为负无穷
dp[i][i-1] = -(1 << 60)
mx := int64(-(1 << 60))

// 计算当前第 i 个子数组对应的权重 w
w := int64(k - i + 1)
if i % 2 == 0 {
w = -w
}

// j 代表当前考虑的前 j 个元素,且要保证后面有足够的元素划分剩余的子数组
for j := i; j <= n - (k - i); j++ {
// 维护前缀最大值:max(dp[i-1][L] - sum[L] * w)
val := dp[i-1][j-1] - sum[j-1] * w
if val > mx {
mx = val
}
// 状态转移:不选第 j 个元素,或者以第 j 个元素结尾作为第 i 个子数组
notTake := dp[i][j-1]
take := sum[j] * w + mx
if notTake > take {
dp[i][j] = notTake
} else {
dp[i][j] = take
}
}
}

return dp[k][n]
}

Go 语言实现注意事项:
1. 数据类型:由于子数组的和以及权重乘积可能非常大,Go 中必须使用 int64 类型来存储前缀和 sum 以及 DP 状态 dp,避免整数溢出。
2. 负无穷表示:Go 中没有内置的 Long.MIN_VALUE,可以使用 -(1 << 60) 来安全地表示一个足够小的负无穷值。
3. 核心逻辑:与 Java 版本完全一致,利用前缀和与滑动窗口最大值思想,将原本 O(n^3) 的暴力枚举优化为 O(n times k) 的时间复杂度。

http://www.jsqmd.com/news/973481/

相关文章:

  • Windows XP兼容性开发实战:使用YY-Thunks解决常见API缺失问题
  • 哈尔滨母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • STM32F407主控+ESP32联网的智能家居控制工程(含FreeRTOS多任务调度与陶晶驰HMI界面源码)
  • 2026年海宁市空调维修避坑指南:5家靠谱专业推荐 海宁小李家电维修正规可靠 - 本地品牌推荐
  • Mac Mouse Fix:如何让你的普通鼠标在macOS上比苹果触控板更好用?
  • 广水母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录
  • 从电磁学到流体力学:散度、旋度、环量、通量到底在描述什么?一张图讲清楚
  • 2026年6月7日更新:最新 Docker 国内镜像源加速列表
  • AI编排:企业级LLM应用落地的数据调度中枢
  • AI 导出鸭实用教程:ChatGPT 和 Gemini 转 pdf,轻松搞定文件格式转换
  • 5个实用技巧:使用kb库高效处理阿拉伯语、印地语等复杂脚本
  • 从一篇大学英语课文,聊聊技术人如何避免成为‘凯文2050’:警惕知识停滞与技能贬值
  • 公主岭母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • java知识四(面向对象编程)
  • 字符串与链表刷题集(5.30-6.6)
  • 科研信息流操作系统:arXiv自动化+结构化笔记+知识图谱闭环
  • 新能源车企的整车故障排查标准(15):故障诊断综合案例与思维训练
  • 2026年镇江CPPM课程班期费用怎么核对?众智商学院官网400冯老师资料咨询 - 众智商学院职业教育
  • 第32章:AI辅助去中心化身份(DID)——链上可验证凭证
  • 豆包 LeetCode 3082. 求出所有子序列的能量和 Java实现
  • 3分钟掌握百度网盘直链解析:告别限速的完整指南
  • 手把手教你排查华为桌面云FusionAccess用户登录失败问题(附详细日志分析)
  • 终极游戏语言障碍终结者:XUnity.AutoTranslator完整指南
  • 【Redis分布式缓存实战】第18章 Redis全方位性能调优
  • 第33章:AI辅助SocialFi开发——Lens协议集成
  • IDEA + Maven Assembly Plugin:一条命令打包含所有依赖的JavaFX Jar,再用exe4j生成轻量exe
  • 广元母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 赣州母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • PHP代码迁移与版本升级指南