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

力扣-3232. 判断是否可以赢得数字游戏

给你一个 正整数 数组 nums

Alice 和 Bob 正在玩游戏。在游戏中,Alice 可以从 nums 中选择所有个位数  所有两位数,剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和,则 Alice 获胜。

如果 Alice 能赢得这场游戏,返回 true;否则,返回 false

示例 1:

输入:nums = [1,2,3,4,10]

输出:false

解释:

Alice 不管选个位数还是两位数都无法赢得比赛。

示例 2:

输入:nums = [1,2,3,4,5,14]

输出:true

解释:

Alice 选择个位数可以赢得比赛,所选数字之和为 15。

示例 3:

输入:nums = [5,5,5,25]

输出:true

解释:

Alice 选择两位数可以赢得比赛,所选数字之和为 25。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 99
class Solution:def canAliceWin(self, nums: List[int]) -> bool:return sum(x if x < 10 else -x for x in nums) != 0

解释

  1. 定义函数和类:

    • class Solution: 定义一个类Solution
    • def canAliceWin(self, nums: List[int]) -> bool: 定义类中的方法canAliceWin,接收一个整数数组nums,返回一个布尔值。
  2. 计算总和:

    • sum(x if x < 10 else -x for x in nums): 这是一个生成器表达式,它遍历nums中的每个元素x,并根据条件对每个元素进行处理。
      • x if x < 10 else -x: 如果x是个位数(即x < 10),则直接取它的值x。否则,取它的负值-x(即两位数取负值)。
      • sum(...): 将上述条件处理后的所有值求和。
  3. 比较结果:

    • sum(x if x < 10 else -x for x in nums) != 0: 比较计算出的总和是否不等于0。
      • 如果不等于0,返回True,表示Alice可以赢得比赛。
      • 如果等于0,返回False,表示Alice不能赢得比赛。

思路解释

这段代码的核心思想是计算Alice选择的所有个位数的总和与Bob选择的所有两位数的总和之间的差异:

  • 如果Alice选择所有个位数,她的得分就是所有个位数的和。
  • 如果Alice选择所有两位数,她的得分就是所有两位数的和。

通过将个位数保留原值(x if x < 10)并将两位数取负值(-x),我们可以通过求和来快速判断两者的总和是否相等:

  • 如果sum(x if x < 10 else -x for x in nums)的结果不为0,说明Alice选择的某一类数字(个位数或两位数)的和与Bob的总和不同,Alice可以赢得比赛。
  • 如果结果为0,说明无论Alice选择哪一类数字,两者的总和都是一样的,Alice无法赢得比赛。

这段代码有效地利用了Python的生成器表达式和条件表达式来简化判断逻辑

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Miniconda快速安装conda
  • 网络编程 --------- 2、socket网络编程接口
  • C++跳跃表个人理解
  • 如何设计一个测试用例
  • 计算两个时间之间有几个自然月
  • 量化小白也能自动化挖掘出6万+因子
  • 5分钟完成视频会议私有化部署
  • 类和对象的深入了解6
  • 【C语言】简易版扫雷游戏(数组、函数的练习)
  • 05-ArcGIS For JavaScript-RenderNode后处理效果
  • [012-1].第12节:Mysql的配置文件的使用
  • ubuntu安装workon
  • MyBatis缓存
  • DataKit之OpenGauss数据迁移工具
  • 大数据技术基础编程、实验和案例----大数据课程综合实验案例
  • 0基础学习移动端适配
  • CentOS 7 修改主机名
  • Redis中的lru算法实现
  • Spark RDD学习: aggregate函数
  • SpingCloudBus整合RabbitMQ
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue.js-Day01
  • 飞驰在Mesos的涡轮引擎上
  • 关于使用markdown的方法(引自CSDN教程)
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 深入浅出webpack学习(1)--核心概念
  • 数据可视化之 Sankey 桑基图的实现
  • 数组大概知多少
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 小李飞刀:SQL题目刷起来!
  • linux 淘宝开源监控工具tsar
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • (52)只出现一次的数字III
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (汇总)os模块以及shutil模块对文件的操作
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (万字长文)Spring的核心知识尽揽其中
  • (学习日记)2024.01.19
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ***通过什么方式***网吧
  • .net Application的目录
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET gRPC 和RESTful简单对比
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @Transactional事务注解内含乾坤?
  • [20170705]diff比较执行结果的内容.txt