当前位置:网站首页>golang 刷leetcode:从栈中取出 K 个硬币的最大面值和
golang 刷leetcode:从栈中取出 K 个硬币的最大面值和
2022-08-02 20:37:00 【用户9710217】
一张桌子上总共有 n 个硬币 栈 。每个栈有 正整数 个带面值的硬币。
每一次操作中,你可以从任意一个栈的 顶部 取出 1 个硬币,从栈中移除它,并放入你的钱包里。
给你一个列表 piles ,其中 piles[i] 是一个整数数组,分别表示第 i 个栈里 从顶到底 的硬币面值。同时给你一个正整数 k ,请你返回在 恰好 进行 k 次操作的前提下,你钱包里硬币面值之和 最大为多少 。
示例 1:
输入:piles = [[1,100,3],[7,8,9]], k = 2
输出:101
解释:
上图展示了几种选择 k 个硬币的不同方法。
我们可以得到的最大面值为 101 。
示例 2:
输入:piles = [[100],[100],[100],[100],[100],[100],[1,1,1,1,1,1,700]], k = 7
输出:706
解释:
如果我们所有硬币都从最后一个栈中取,可以得到最大面值和。
提示:
n == piles.length
1 <= n <= 1000
1 <= piles[i][j] <= 105
1 <= k <= sum(piles[i].length) <= 2000
解题思路:
1,这个题可以转化成背包问题
2,stack的前n个元素的和sum可以看成,重量为n,价值为sum的物品
3,对每一个栈,有0到n种选择,一共piles.length个栈
4,递推方程为f[j]=max(f[j],f[j-w]+v)
5, 初始化情况下,一个物品也没有选,价值为0
6, 我们不断选物品,背包容量不断减少,价值越来越大,所以我们采用递减的方式迭代
7, 迭代完所有的栈,就得到最大值。
func maxValueOfCoins(piles [][]int, k int) int {
f := make([]int, k+1)
sumN := 0
for _, pile := range piles {
n := len(pile)
for i := 1; i < n; i++ {
pile[i] += pile[i-1] // pile 前缀和
}
sumN = min(sumN+n, k) // 优化:j 从前 i 个栈的大小之和开始枚举(不超过 k)
for j := sumN; j > 0; j-- {
for w, v := range pile[:min(n, j)] {
f[j] = max(f[j], f[j-w-1]+v) // 下标从 0 开始,物品体积为 w+1
}
}
}
return f[k]
}
func min(a, b int) int { if a > b { return b }; return a }
func max(a, b int) int { if b > a { return b }; return a }
边栏推荐
- 信息学奥赛一本通(1258:【例9.2】数字金字塔)
- SublimeText3 安装、配置项、包管理、常用必备插件、常用快捷键以及修改
- .NET性能优化-你应该为集合类型设置初始大小
- The time series database has been developed for 5 years. What problem does it need to solve?
- 千人优学 | GBase 8s数据库2022年6月大学生专场实训圆满结束
- WPF development through practical 】 【 automatic production management platform
- 二叉搜索树的实现
- 什么是幂等
- Flink Yarn Per Job - 创建启动Dispatcher RM JobManager
- 数据库分析与优化
猜你喜欢
Jar包启动通过ClassPathResource获取不到文件路径问题
Informatics orsay a tong (1258: 【 9.2 】 digital pyramid)
【目标检测】YOLOv5:640与1280分辨率效果对比
广东省数字经济发展指引 1.0之建成数据安全保障体系
Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)
[C题目]力扣138. 复制带随机指针的链表
用户之声 | 我与GBase的缘分
Use the TCP protocol, we won't lost package?
HCIP--BGP基础实验
Tencent YunMeng every jie: I experienced by cloud native authors efficiency best practices case
随机推荐
X 2 Earn必须依靠旁氏启动?GameFi的出路在哪?(下)
博客主页rrs代码
HCIP--路由策略实验
MSTP与STP
Day12 接口和协议
STP生成树协议
iframe------------frame-
解道6-编程技术3
信息学奥赛一本通(1258:【例9.2】数字金字塔)
56.【全局变量和局部变量专题】
软件测试的流程规范有哪些?具体要怎么做?
Bee 事务注解 @Tran 使用实例
Flutter 常见异常分析
Adobe官方清理工具Adobe Creative Cloud Cleaner Tool使用教程
【模型压缩】实例分析量化原理
什么是 IDE
Common tools and test methods for interface testing (Introduction)
Vscode快速入门、 插件安装、插件位置、修改vscode默认引用插件的路径、在命令行总配置code、快捷键
交 叉 数 组
【21天学习挑战赛】冒泡排序与插入排序