小白水平理解面试经典题目LeetCode 1025 Divisor Game【动态规划】

news2025/1/19 8:15:43

1025 除数游戏

小艾 和 小鲍 轮流玩游戏,小艾首先开始。
最初,黑板上有一个数字 n 。在每个玩家的回合中,该玩家做出的动作包括:

  • 选择任意 x,使 0 < x < n 和 n % x == 0 。
  • 将黑板上的数字 n 替换为 n - x 。
    此外,如果玩家无法采取行动,他们就会输掉比赛。

当且仅当 小艾赢得游戏时返回 true ,假设两个玩家都发挥最佳。

例子

在这里插入图片描述

在大学某个自习的下午,小白坐在教室看到这道题。想想现年景一过,没有什么理由再不学习了。真是若对黄花孤负酒,怕黄花,也笑人岑寂。

这时候黑长直女神过来问:小白,你看到1025这道题了吗,怎么感觉看着很简单,但是理解起来很麻烦啊,这道题你有什么思路呢?

小白内心镇定:这机会不就来了吗,小美,《一起摇太阳》有机会一起去看看吧?
在这里插入图片描述
哦,不是,题目描述意思说的简单一些。

这种题目我们首先把他进行下条件梳理,

从这个问题来看,小艾可以从 1 to N 中选择一个数字,并且她必须选择优化她的获胜。同样,小鲍也会努力为自己赢得胜利。

考虑如果数字是 2 ,小艾以 1 开头并且她赢了

对于 3 ,小艾选择 1 ,小鲍再次选择 1 ,小艾输了

咱们拿4举个例子

4 = 小艾 -> (4 - 1) - 剩下 3 给 小鲍
3 = 小鲍 -> (3 -1) - 剩下 2 给 小艾
2 = 小艾 -> (2 - 1) - 剩下 1 给 小鲍

现在鲍勃无法选择任何东西,他输了

像这样,如果我们尝试每个数字,我们将得到一个模式,如果我们知道 N 是奇数,那么 小艾输了,如果 N 是偶数小艾赢了。

解决这个问题的简单方法是返回 N % 2 == 0

小白:没问题,谁叫为了“真爱”呢。

真正面试环节

面试官:咱们今天来个轻松的,你可以解答这道”除数游戏“的题目吗,来看看你对简单题目的理解。

小白:嘿嘿,这不巧了么这不是。
在这里插入图片描述

public boolean divisorGame(int N) {
       return N % 2 == 0;
   }

小明:OK,完事儿,等着面试官来表扬自己吧。他肯定会说:小子,你是个好手!工位都给你准备好了,工资你说了算。

面试官:矮油,不错啊,不过你是不是完成的太快了,这么一行就像糊弄我。是否还有其他办法呢。
在这里插入图片描述
小明OS:今年这个找工市场,人言洛阳花似锦,偏我来时不逢春。。。不是,谁让你这出题正好有简单方法呢!

public static boolean divisorGame(int N) {
        // dp数组,dp[i]表示N=i时,小艾是否能获胜
        boolean[] dp = new boolean[N + 1];

        for (int i = 2; i <= N; i++) {
            // 对于每个N,遍历所有可能的选择
            for (int x = 1; x < i; x++) {
                if (i % x == 0 && !dp[i - x]) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[N];
    }

小白:您好,面试官,这回可以了吧,我终于有钱请小美看电影了!
在这里插入图片描述

============================================================================
🍀🍀🍀🍀🍀🍀更多算法题解请看 面试数据结构与算法总结分类+leetcode目录【基础版】
编码道路漫漫,只要先看脚下的路,徐徐前进即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录day25--回溯的应用4

LeetCode491.非递减子序列 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;…

[Flink02] Flink架构和原理

这是继第一节之后的Flink入门系列的第二篇&#xff0c;本篇主要内容是是&#xff1a;了解Flink运行模式、Flink调度原理、Flink分区、Flink安装。 1、运行模式 Flink有多种运行模式&#xff0c;可以运行在一台机器上&#xff0c;称为本地&#xff08;单机&#xff09;模式&am…

相机图像质量研究(34)常见问题总结:图像处理对成像的影响--拖影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

如何使用Sora?Sora小白教程一文通

如果需要使用Sora或者GPT4&#xff0c;请参考文章&#xff1a;如何使用Sora&#xff1f;Sora小白教程一文通 什么是Sora Sora是OpenAI于2024年2月18日凌晨发布的新的文生视频大模型&#xff0c;名为 “ Sora ”。 从OpenAI在官网展示的Sora生成视频的效果来看&#xff0c;在生…

修改vue-layer中title

左侧目录树点击时同步目录树名称 试了很多方法 layer.title(新标题&#xff0c;index)不知道为啥不行 最后用了获取html树来修改了 watch: {$store.state.nowTreePath: function(newVal, oldVal) {if (document.querySelectorAll(".lv-title") && document.q…

Quartz---串行执行、JobDataMap持久化

1.Quartz串行执行 在Quartz中&#xff0c;作业&#xff08;Job&#xff09;默认是以并行方式执行的&#xff0c;这意味着如果调度器&#xff08;Scheduler&#xff09;有多个线程可用&#xff0c;并且满足触发条件&#xff0c;那么多个作业可能会同时执行。然而&#xff0c;有时…

有什么办法解决SQL注入问题

随着互联网的普及和数字化进程的加速&#xff0c;Web攻击已经成为网络安全领域的一大威胁。Web攻击不仅可能导致个人隐私泄露、财产损失&#xff0c;还可能对企业和国家的安全造成严重影响。下面德迅云安全就分享一种常见的web攻击方式-SQL注入&#xff0c;了解下什么是SQL注入…

【VTKExamples::GeometricObjects】第一期 TextActor

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例TextActor,并解析接口vtkTextActor,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. TextActor 该样例有两…

Postman接口测试之断言

一、断言 在 postman 中我们是在Tests标签中编写断言&#xff0c;同时右侧封装了常用的断言&#xff0c;当然 Tests 除了可以作为断言&#xff0c;还可以当做后置处理器来编写一些后置处理代码&#xff0c;经常应用于&#xff1a; 【1】获取当前接口的响应&#xff0c;传递给…

图像处理之《隐写网络的隐写术》论文阅读

一、文章摘要 隐写术是一种在双方之间进行秘密通信的技术。随着深度神经网络(DNN)的快速发展&#xff0c;近年来越来越多的隐写网络被提出&#xff0c;并显示出良好的性能。与传统的手工隐写工具不同&#xff0c;隐写网络的规模相对较大。如何在公共信道上秘密传输隐写网络引起…

Django后端开发——模型层及ORM介绍

文章目录 参考资料Django配置MySQL安装mysqlclient创建数据库进入数据库的操作可能遇到的问题及解决方案Pycharm配置settings.py 模型![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c83753397bf6481d8defde26537903bf.png)ORM介绍示例终端&#xff1a;settings.py…

JAVA面试框架篇

1. Spring refresh 流程 要求 掌握 refresh 的 12 个步骤 Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法&#xff0c;负责初始化 ApplicationContext 容器&#xff0c;容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法&#x…

Quartz---JobDataMap使用的两种方式

任务调度执行原理图&#xff1a; JobDataMap的使用 JobDataMap是Quartz调度器中的一个重要组件&#xff0c;主要用于存储和传递与作业&#xff08;Job&#xff09;相关的数据。它是一个实现了Java Map接口的对象&#xff0c;可以用来保存一系列的序列化的对象。这些对象在作业执…

基于TensorFlow的LibriSpeech语音识别

一、引言 随着人工智能技术的日益成熟&#xff0c;深度学习在语音识别领域取得了显著的突破。本博客将介绍如何使用TensorFlow框架&#xff0c;结合LibriSpeech数据集&#xff0c;构建一个高效的语音识别系统。 目录 一、引言 二、环境准备 为了运行本示例代码&#xff0c;…

冒泡排序:原理、实现与性能分析

引言 在编程世界中&#xff0c;排序算法是不可或缺的一部分。冒泡排序作为最基本的排序算法之一&#xff0c;虽然其效率并不是最高的&#xff0c;但其实现简单、易于理解的特点使得它成为学习和理解排序算法的入门之选。本文将详细介绍冒泡排序的原理、实现方法以及性能分析&a…

java实现排序算法(上)

排序算法 冒泡排序 时间和空间复杂度 要点 每轮冒泡不断地比较比较相邻的两个元素,如果它们是逆序的,则需要交换它们的位置下一轮冒泡,可以调整未排序的右边界,减少不必要比较 代码 public static int[] test(int[] array) {// 外层循环控制遍历次数for (int i 0; i <…

政安晨:【完全零基础】认知人工智能(二)【超级简单】的【机器学习神经网络】—— 底层算法

如果小伙伴第一次看到这篇文章&#xff0c;可以先浏览一下我这个系列的上一篇文章&#xff1a; 政安晨&#xff1a;【完全零基础】认知人工智能&#xff08;一&#xff09;【超级简单】的【机器学习神经网络】 —— 预测机https://blog.csdn.net/snowdenkeke/article/details/…

mac东西拷不进硬盘怎么回事 mac东西拷不进硬盘怎么办 mac硬盘读不出来怎么解决 mac拷贝不了东西到u盘

有时候我们在使用mac的过程中&#xff0c;可能会遇到一些问题&#xff0c;比如mac东西拷不进硬盘。这是一种很常见的情况&#xff0c;但是会影响我们的工作和生活。那么&#xff0c;mac东西拷不进硬盘是怎么回事呢&#xff1f;mac东西拷不进硬盘又该怎么办呢&#xff1f;本文将…

【设计模式】4、策略模式

文章目录 一、问题二、解决方案2.1 真实世界的类比2.2 策略模式结构2.3 适用场景2.4 实现方式2.5 优缺点2.6 与其他模式的关系 三、示例代码3.1 go3.2 rust 策略模式是一种行为设计模式&#xff0c;它能定义一系列算法&#xff0c;把每种算法分别放入独立的类中&#xff0c;以是…

《隐私计算简易速速上手小册》第4章:技术挑战与解决方案(2024 最新版)

文章目录 4.1 隐私计算中的技术难题4.1.1 基础知识4.1.2 重点案例:同态加密在金融数据分析中的应用4.1.3 拓展案例 1:安全多方计算在医疗数据共享中的应用4.1.4 拓展案例 2:差分隐私在社交媒体分析中的应用4.2 数据加密与解密的挑战4.2.1 基础知识4.2.2 重点案例:加密的在线…