首页/新闻资讯/正文详情

DeepSeek LeetCode 464. 我能赢吗 Java实现

发布时间:2026/11/15 13:50:19 来源:云帆数科 栏目:资讯中心
DeepSeek    LeetCode 464. 我能赢吗 Java实现
LeetCode 464. 我能赢吗题目思路两个玩家轮流从 1 ~ maxChoosableInteger 中选一个未使用过的数字累加到总和先让总和 ≥ desiredTotal 的玩家获胜。问先手能否保证必胜。核心难点这是博弈 状态压缩问题。暴力枚举会爆炸必须记忆化。关键观察数字最多 20 个可以用一个 int 的二进制位表示哪些数字已被选状态压缩。当前累计总和 total 由 state 唯一确定已选数字之和所以记忆化只需按 state 存。必胜转移当前玩家选数字 i 时——· 若 total i target直接赢· 否则若 对手在下一状态必输!dfs(nextState)当前玩家也赢· 若枚举完所有选择都赢不了则当前玩家必输。剪枝· 若 maxChoosableInteger desiredTotal先手第一步直接达标必胜· 若所有数之和 desiredTotal谁都达不到目标先手判负。Java 代码状压 记忆化 DFSclassSolution{privateintm,target;privateint[]memo;// 0未计算, 1当前玩家必输, 2当前玩家必胜publicbooleancanIWin(intmaxChoosableInteger,intdesiredTotal){this.mmaxChoosableInteger;this.targetdesiredTotal;// 剪枝 1先手第一步就能达标if(mtarget)returntrue;// 剪枝 2所有数字之和都不够无人能赢先手判负if((long)m*(m1)/2target)returnfalse;memonewint[1m];returndfs(0,0);}/** * param state 二进制位标记已选数字第 i 位表示数字 i1 是否已选 * param total 当前累计和 * return 轮到当前玩家时是否能保证获胜 */privatebooleandfs(intstate,inttotal){if(memo[state]!0)returnmemo[state]2;for(inti0;im;i){if((state(1i))!0)continue;// 该数字已使用intnumi1;// 情况 1选完后立即达到目标 - 当前玩家赢if(totalnumtarget){memo[state]2;returntrue;}// 情况 2选完后对手必输 - 当前玩家赢if(!dfs(state|(1i),totalnum)){memo[state]2;returntrue;}}// 所有选择都赢不了含无数字可选的情况- 当前玩家输memo[state]1;returnfalse;}}复杂度分析· 时间复杂度O(m · 2^m)。状态数 2^m每个状态枚举 m 个数字。m ≤ 20约 2×10^7 次操作Java 中可过。· 空间复杂度O(2^m)。m 20 时 int[120] 约 4MB可接受。若想节省空间可把 int[] 换成 HashMapInteger, Boolean只存访问过的状态代价是常数更大。示例验证示例 1maxChoosableInteger 10, desiredTotal 11· 先手无论选 i1~10对手选 11-i 立即达到 11 → 先手必输· 返回 false ✓示例 2maxChoosableInteger 10, desiredTotal 0· 剪枝 110 0 直接返回 true目标为 0 时先手不选也算达标按题目约束此时先手直接胜出✓示例 3maxChoosableInteger 10, desiredTotal 1· 剪枝 110 1先手选 1 直接赢 → 返回 true ✓易错点易错点 说明状态定义 第 i 位代表数字 i10-indexed 转 1-indexed不要搞反total 是否需要进 memo 不需要。total 可由 state 唯一推出只按 state 记忆即可否则会重复计算浪费空间“无路可走的判定 循环结束仍未返回 true就返回 false等价于当前玩家输”sum 溢出 m*(m1)/2 在 m20 时只有 210不会溢出但养成用 long 的习惯剪枝遗漏 不加 sum target 的剪枝会产生大量无法分出胜负的无意义搜索

相关推荐

DeepSeek    LeetCode 462. 最小操作次数使数组元素相等 II Java实现
DeepSeek LeetCode 462. 最小操作次数使数组元素相等 II Java实现

LeetCode 462. 最小操作次数使数组元素相等 II 题目思路 每次操作可让某个元素 1 或 -1,要让所有元素相等且操作次数最少。 数学结论:设目标值为 x,总代价为 f(x) Σ |nums[i] - x|这是关于 x 的凸函数,最小值在数组的中位数处取… · 2026/11/8 0:37:16

Redis 7 天学习笔记 · Day 2
Redis 7 天学习笔记 · Day 2

Redis 7 天学习笔记 Day 2主题:五种数据结构——每种只学“什么时候非它不可”环境:Ubuntu 虚拟机 Python 3 Redis一句话总结:数据结构选错,代码会变丑;选对,一行命令解决的事不用写十行。一、今日核心认… · 2026/11/3 8:31:04

千问    LeetCode 454. 四数相加 II Java实现
千问 LeetCode 454. 四数相加 II Java实现

这道题用分组 哈希表最稳&#xff1a;把四数之和拆成两组两数之和&#xff0c;避免 O(n⁴) 暴力。 Java 实现 class Solution { public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { Map<Integer, Integer> sumMap new HashMap<>();… · 2026/11/3 0:29:13

高压电工作业背景图片怎么找?考前押题和报名流程全知道
高压电工作业背景图片怎么找?考前押题和报名流程全知道

高压电工作业背景图片怎么找?考前押题和报名流程全知道 你是不是也和我一样,不知道去哪报名怕被中介坑?高压电工作业证关系到生命安全和职业发展,但网上信息太多太杂,一不小心就掉进坑里。别急,这篇文章带你一步步了解高压电工作业背景图片的来源、报考… · 2026/11/15 13:50:18

郑州办理建筑电工证值不值得考 工地太忙根本没时间复习考试
郑州办理建筑电工证值不值得考 工地太忙根本没时间复习考试

郑州办理建筑电工证值不值得考 工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这句话说出了太多建筑电工从业者的现状。你可能已经在工地上干了几年,甚至十几年,但一听说要考建筑电工证,心里就开始打鼓:**郑州办理建筑电工证值不值得考?*… · 2026/11/15 13:50:18

低压电工证和弱电官方回应:工地太忙根本没时间复习考试?
低压电工证和弱电官方回应:工地太忙根本没时间复习考试?

低压电工证和弱电官方回应:工地太忙根本没时间复习考试? 工地太忙根本没时间复习考试,这几乎是所有一线电工的真实写照,尤其是低压电工和弱电相关岗位的从业者。很多人在实际工作中已经积累了丰富的经验,但一到考试,就因为复习时间不够而频频失利。… · 2026/11/15 13:50:18

高低压电工证哪用的多有效期多久
高低压电工证哪用的多有效期多久

低压电工证哪用的多真实经历告诉你考证门槛并不高 我以前也担心自己没上过大学,能不能报低压电工证,结果去了郑州一家培训中心,发现人家根本不看学历,只要能干活、有责任心就行。今天就和你聊聊高低压电工证到底哪用得多,报考条件有多宽松,还有真实经历… · 2026/11/15 13:50:18

高压电工证培训流程考前押题怎么准备?证书过期了不知道怎么复审延期
高压电工证培训流程考前押题怎么准备?证书过期了不知道怎么复审延期

高压电工证培训流程考前押题怎么准备?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?别急,高压电工证培训流程其实没那么复杂,关键是要提前规划,特别是考前押题的准备和复审流程,掌握好这些,再忙也能安排得过来。… · 2026/11/15 13:50:18

证书过期了不知道怎么复审延期?电工证考试考些什么值不值得考
证书过期了不知道怎么复审延期?电工证考试考些什么值不值得考

证书过期了不知道怎么复审延期?电工证考试考些什么值不值得考 证书过期了不知道怎么复审延期?这个问题困扰了太多像你一样的人,尤其是刚开始接触特种作业的朋友。很多考生在拿到电工证之后,对后续的 复审流程 和 有效期管理… · 2026/11/15 13:49:18

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码