文章目录
华为OD面试真题精选
专栏:华为OD面试真题精选
目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录
题目描述
有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:
- 每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。
- Alice 将会取走硬币数量最多的那一堆。
- 你将会取走硬币数量第二多的那一堆。
- Bob 将会取走最后一堆。
- 重复这个过程,直到没有更多硬币。
给你一个整数数组
piles,其中piles[i]是第i堆中硬币的数目。返回你可以获得的最大硬币数目。
示例 1:
输入:piles = [2,4,1,2,7,8] 输出:9 解释:选出 (2, 7, 8) ,Alice 取走 8 枚硬币的那堆,你取走 7 枚硬币的那堆,Bob 取走最后一堆。 选出 (1, 2, 4) , Alice 取走 4 枚硬币的那堆,你取走 2 枚硬币的那堆,Bob 取走最后一堆。 你可以获得的最大硬币数目:7 + 2 = 9. 考虑另外一种情况,如果选出的是 (1, 2, 8) 和 (2, 4, 7) ,你就只能得到 2 + 4 = 6 枚硬币,这不是最优解。示例 2:
输入:piles = [2,4,5] 输出:4示例 3:
输入:piles = [9,8,7,6,
本文介绍了华为OD面试的一道真题,涉及如何在三堆硬币中选择以最大化获取硬币数量的问题。通过每轮选择硬币数量第二多的堆,来策略性地获取硬币。文章提供了C++, Java, JavaScript和Python的解题代码示例。"
108842310,8430928,点针图网络:动态构建图结构的解决方案,"['图的搜索空间', '图结构推测', '点针传递', '图神经网络', '动态图连通性']
订阅专栏 解锁全文
91

被折叠的 条评论
为什么被折叠?



