引言 力扣(LeetCode),未来不止于此! 问题描述 你正在玩一个单人游戏,面前放置着大小分别为 a、b和c的三堆石子。 每回合你都要从两个不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在两个或更多的空堆时,游戏停止。 给你三个整数a、b和c,返回可以得到的最大分数 。 示例 1: 输入:a = 2, b = 4, c = 6 输出:6 解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是: - 从第一和第三堆取,石子状态现在是 (1, 4, 5) - 从第一和第三堆取,石子状态现在是 (0, 4, 4) - 从第二和第三堆取,石子状态现在是 (0, 3, 3) - 从第二和第三堆取,石子状态现在是 (0, 2, 2) - 从第二和第三堆取,石子状态现在是 (0, 1, 1) - 从第二和第三堆取,石子状态现在是 (0, 0, 0) 总分:6 分 。 示例 2: 输入:a = 4, b = 4, c = 6 输出:7 解释:石子起始状态是 (4, 4, 6) ,最优的一组操作是: - 从第一和第二堆取,石子状态现在是 (3, 3, 6) - 从第一和第三堆取,石子状态现在是 (2, 3, 5) - 从第一和第三堆取,石子状态现在是 (1, 3, 4) - 从第一和第三堆取,石子状态现在是 (0, 3, 3) - 从第二和第三堆取,石子状态现在是 (0, 2, 2) - 从第二和第三堆取,石子状态现在是 (0, 1, 1) - 从第二和第三堆取,石子状态现在是 (0, 0, 0) 总分:7 分 。 示例 3: 输入:a = 1, b = 8, c = 8 输出:8 解释:最优的一组操作是连续从第二和第三堆取 8 回合,直到将它们取空。 注意,由于第二和第三堆已经空了,游戏结束,不能继续从第一堆中取石子。 算法描述 抓住问题,通过仔细观察分析问题的解释,可以发现当出现实例1中a+b=c的情况时,它的得分等于a+b,后面实例2中第二次取石子时a+b也等于c,那么就可以得出规律,当出现a+b=c时,得分就等于a+b,其中的a,b不是固定,但是c肯定为三个数字中的最大数值,那么就可以通过三个数值的大小数值去进行解题。当a+b<=c时,返回的数值为a+b。 实习编辑:李欣容 稿件来源:深度学习与文旅应用实验室(DLETA) |
|