LeetCode的几道题

一、捡石头 292

思路就是:

谁面对4块石头的时候,谁就输
(因为每次就是1-3块石头,如果剩下4块石头,你怎么拿,我都能把剩下的拿走,所以你就要想尽办法让对面面对4块石头的倍数,

  • 比如有10块石头,你想办法让对方面对4的倍数,10%4=2,也就是你先手拿走2块
  • 比如有13块石头,你想办法让对方面对4的倍数,13%4=1,也就是你先手拿走1块

但是假如你面对了4的倍数,你铁定输,因为对方也是聪明人。

于是先手能不能赢,就看

class Solution {public boolean canWinNim(int n) {return n % 4 != 0 ;}
}

二、捡石头 Nim 游戏 II 1908

int  nums = [ 1, 5, 8, 6 ]

我和你进行捡石头游戏,假如有4堆石头,
第一堆有1个石头,
第二堆有5个石头,
第三堆有8个石头,
第四堆有6个石头,

每次只能从最前面或者最后面取1堆石头,能否保证先手一定能赢

分析如下:

public static void main(String[] args) {int[] nums = {1, 5, 8, 6};int[] nums2 = {3, 9, 1, 2};int[] nums3 = {1, 1, 1, 1};int[] nums4 = {2, 5, 1, 3, 7, 8, 9, 11};int[] nums5 = {1000,0,10000,2,1};int[] nums6 = {10, 8, 20, 15, 3};int[] nums7 = {1, 1, 1, 10};//        int[] nums0 = {5, 8, 6};
//        System.out.println(firstHandCanScore(nums0));System.out.println(firstHandCanScore(nums));System.out.println(firstHandCanScore(nums2));System.out.println(firstHandCanScore(nums3));System.out.println(firstHandCanScore(nums4));System.out.println(firstHandCanScore(nums5));}private static boolean firstHandCanScore(int[] nums) {WinScoreData winScoreData = process(nums, 0, nums.length - 1);System.out.println(winScoreData.winScore);return winScoreData.winScore > 0;}private static WinScoreData process(int[] nums, int fromIndex, int toIndex) {if (fromIndex == toIndex) {return new WinScoreData(nums, fromIndex, toIndex, nums[fromIndex]);}int startLeft = nums[fromIndex];WinScoreData chooseLeftWinScore = process(nums, fromIndex + 1, toIndex);int leftWinScore = startLeft - chooseLeftWinScore.winScore; // 选左边之后的赢面int startRight = nums[toIndex];WinScoreData chooseRightWinScore = process(nums, fromIndex, toIndex - 1);int rightWinScore = startRight - chooseRightWinScore.winScore; // 选右边之后的赢面int winScore = Math.max(leftWinScore, rightWinScore);return new WinScoreData(nums, fromIndex, toIndex, winScore);}@AllArgsConstructorpublic static class WinScoreData {private int[] nums;private int fromIndex;private int toIndex;private int winScore;}

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

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

相关文章

Linux shell中的函数定义、传参和调用

Linux shell中的函数定义、传参和调用: 函数定义语法: [ function ] functionName [()] { } 示例: #!/bin/bash# get limit if [ $# -eq 1 ] && [ $1 -gt 0 ]; thenlimit$1echo -e "\nINFO: input limit is $limit" e…

CPU 使用率和负载Load

优质博文:IT-BLOG-CN 一、CPU 使用率 CPU使用率是 CPU处理非空闲任务所花费的时间百分比 。例如单核CPU 1s内非空闲态运行时间为0.8s,那么它的CPU使用率就是80%;双核CPU 1s内非空闲态运行时间分别为0.4s和0.6s,那么,…

IDEA2023安装教程(超详细)

文章目录 前言安装IntelliJ IDEA1. 下载IntelliJ IDEA2. 运行安装程序3. 选择安装路径4. 选择启动器设置5. 等待安装完成6. 启动IntelliJ IDEA7. 配置和设置8. 激活或选择许可证9. 开始使用 总结 前言 随着软件开发的不断发展,IntelliJ IDEA成为了许多开发人员首选…

基于JSP的网络考试系统/在线考试系统的设计与实现

摘 要 网络考试系统是由高校的一个网络考试,按照章程自主开展网络考试系统。网络考试是实施素质教育的重要途径和有效方式,在加强校园文化建设、提高学生综合素质、引导学生适应社会、促进学生成才就业等方面发挥着重要作用,是新形势下有效凝…

RHCE学习笔记(RHEL8) - RH294

Chapter Ⅰ 介绍Ansible ansible ansible是一款开源自动化平台 ansible围绕一种无代理架构构建,在控制节点上安装ansible,且客户端不需要任何特殊的代理软件;ansible使用SSH等标准协议连接受管主机,并在受管主机上运行代码或命令来…

在cmd下查看mysql表的结构信息

我提前已经在mysql数据库中创建了一个表: 在cmd下,登录mysql以后,使用命令describe 表名、或者explain 表名可以查看表结构信息。但在实践中,查看表结构,多用describe命令,而查看执行计划用explain。 例…

p标签在div中居中

新建一个html文件,命名为test.html,用于讲解如何在css中让div中的p标签居中。 在test.html文件内,在div内,使用p标签创建一行文字,用于测试。 在test.html文件内,设置div标签的class属性为mydiv。 在…

计算机网络扫盲(1)——因特网

一、概述 因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界数十亿计算设备的网络。大家对此应该并不陌生,我们身边有着不计其数的计算机设备被接入了因特网,如今计算机网络这个术语似乎已经有点过时了,用因特网的术语…

CRM系统是怎样帮助销售流程自动化的?

销售业绩是衡量企业经营的重要指标,也是销售人员一直要达成的目标。销售业绩能否提高取决于销售人员的能力、客户服务水平,还需要借助有效的工具。CRM系统就是这样的一款软件。企业如何提高销售业绩?不妨试试CRM销售流程自动化。 CRM如何实现…

【C语言:数据在内存中的存储】

文章目录 1.整数在内存中的存储1.1整数在内存中的存储1.2整型提升 2.大小端字节序2.1什么是大小端2.2为什么有大小端之分 3.整数在内存中的存储相关题目题目一题目二题目三题目四题目五题目六题目七 4.浮点数在内存中的存储4.1浮点数存的过程4.2浮点数取得过程 在这之前呢&…

openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志

文章目录 openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志137.1 检查操作系统日志137.2 检查openGauss运行日志137.3 清理运行日志 openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志 日志是检查系统运行及故障定位的关键手段。建议按…

Windows下安全认证机制

NTLM(NT LAN Manager) NTLM协议是在Microsoft环境中使用的一种身份验证协议,它允许用户向服务器证明自己是谁(挑战(Chalenge)/响应(Response)认证机制),以便…

TA-Lib学习研究笔记(八)——Momentum Indicators 中

TA-Lib学习研究笔记(八)——Momentum Indicators 中 Momentum Indicators 动量指标,是最重要的股票分析指标,能够通过数据量化分析价格、成交量,预测股票走势和强度,大部分指标都在股票软件中提供。 11. …

对el-select封装成组件使用

效果与直接使用el-select一样&#xff0c;多处用el-select显得代码冗余就进行了封装 效果图&#xff1a; el-select封装&#xff1a; <template><div class"my-select"><el-selectv-model"person.modelValue":placeholder"placehold…

Linux中的文件IO

文章目录 C语言文件操作系统文件I/O接口介绍 open函数返回值文件描述符fd0 & 1 & 2文件描述符的分配规则 重定向使用 dup2 系统调用 FILE理解文件系统理解硬链接软链接acm 动态库和静态库静态库与动态库生成静态库生成动态库&#xff1a; C语言文件操作 先来段代码回顾…

DBeaver 社区版(免费版)下载、安装、解决驱动更新出错问题

DBeaver 社区版&#xff08;免费版&#xff09; DBeaver有简洁版&#xff0c;企业版&#xff0c;旗舰版&#xff0c;社区版&#xff08;免费版&#xff09;。除了社区版&#xff0c;其他几个版本都是需要付费的&#xff0c;当然相对来说&#xff0c;功能也要更完善些&#xff…

Fiddler抓包工具之fiddler设置过滤

fiddler设置过滤 基本的过滤操作流程以百度为例 步骤&#xff1a; 1、右侧高级工具栏点击Filters》勾选Use Filters》选择Show only Internet Hosts和Show only the following Hosts》在文本框中输入host地址 2、点击Changes not yet saved》再点击Actions》Run Filterset …

Azure Machine Learning - 在 Azure AI 搜索中创建全文查询

Azure AI搜索中如果要为全文搜索生成查询&#xff0c;本文提供了设置请求的步骤。 本文还介绍了查询结构&#xff0c;并说明了字段属性和语言分析器如何影响查询结果。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&a…

RISC-V_WCH系列微控器软件体系云端快速架构

1 概述 RISC-V内核的微控器MCU&#xff0c;正在以更高的性价比&#xff0c;快速取代传统的各类ARM系列微控制处理器。 针对常用的芯成RISC-V内核的泌恒WCH系列微控器MCU&#xff0c;推出了&#xff1a;RISC-V_WCH系列微控器软件体系快速架构云平台。只要以身份证号码做用户名…

交换综合实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、链路聚合&#xff08;配置Eth-trunk&#xff09; 2、配置vlan&#xff08;创建划分vlan&#xff0c;配置trunk干道&#xff09; 3、MSTP配置 4、VRRP配置 5、DHCP配置 6、vlan互通 7、NAT配置&#xff08;做ACL&#…