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

leetcode-1686石子游戏

题目链接

1686. 石子游戏 VI - 力扣(LeetCode)

解题思路

选取石头的最优化的策略是,让自己的分最高,同时让对手失分最多。因此,我们创建一个数组vals,其中vals[i] = (aliceValues[i] + bobValues[i],i),表示第i个石头的总价值和编号,然后我们对vals按照总价值降序排序。

然后我们按照vals的顺序,让Alice和Bob交替选取石头。Alice选取vals中的偶数位置的石头,Bob选取vals中奇数位置的石头。最后比较Alice和Bob的得分,返回对应的结果。

解题代码

class Solution:
    def stoneGameVI(self, aliceValues: List[int], bobValues: List[int]) -> int:
        vals = [(a + b, i) for i, (a, b) in enumerate(zip(aliceValues, bobValues))]
        vals.sort(reverse=True)
        a = sum(aliceValues[i] for _, i in vals[::2])
        b = sum(bobValues[i] for _, i in vals[1::2])
        if a > b:
            return 1
        if a < b:
            return -1
        return 0

原文地址:https://blog.csdn.net/weixin_53908842/article/details/135991115
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/226933.html

相关文章:

  • java05 数组
  • 一篇文章了解系统眼中的键盘--以一个简单的系统分析从按键的输入到字符的显示
  • 机器学习:Logistic回归(Python)
  • 5、DSP28335 串口发送接收FIFO中断,自定义printf函数
  • 深度学习的进展
  • 计算机网络_1.6.2 计算机网络体系结构分层的必要性
  • nginx初学者指南
  • FlashFXP 下载、安装、使用
  • 在多线程编程中使用 `std::future` 和 `std::vector<std::future<void>>`
  • 【问题解决】VSCode1.86.0版+拓展Remote-SSHv0.108 无法连接到VSCode服务器(VSCode无法远程连接到Linux)
  • MySQL 用户管理
  • 神经网络 | 基于多种神经网络模型的轴承故障检测
  • centOS linux 宝塔 部署django 遇坑小记
  • 基础算法bfs -剪枝问题
  • ep-bg-purple-dark element-plus 不生效
  • react 之 useCallback
  • Kafka常见生产问题详解
  • .locked.locked1勒索病毒爆发:如何有效保护和恢复您的文件
  • AVL树
  • 微信小程序(三十三)promise异步写法