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

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.lryc.cn/news/250727.html

相关文章:

  • NLP/Natural Language Processing
  • 【教学类-06-12】20231202 0-9数字分合-房屋样式(一)-下右空-升序-抽7题
  • uni-app 微信小程序 电子签名及签名图片翻转显示功能
  • MySQL 8.0关键字和保留字
  • PyLMKit(3):基于角色扮演的应用案例
  • JAVA全栈开发 集合详解(day14+day15汇总)
  • Linux Spug自动化运维平台本地部署与公网远程访问
  • zookeeper集群和kafka集群
  • Java——》JSONObjet 数据顺序
  • 【个人记录】NGINX反向代理grpc服务
  • 【小白推荐】安装OpenCV4.8 系统 Ubuntu 22.04LST Linux.
  • 使用Docker Compose搭建CIG监控平台
  • 前端文本省略号后面添加复制文字
  • 【算法】动态规划中的路径问题
  • 代数学笔记9: 群的直积,可解群,自由群,群表示
  • kali学习
  • 《论文阅读》DualGATs:用于对话中情绪识别的双图注意力网络
  • 【算法】单调栈题单——字典序最小⭐(一种类型的模板题)
  • DockerCompose修改某个服务的配置(添加或编辑端口号映射)后如何重启单个服务使其生效
  • DOM 事件的传播机制
  • (数据结构)顺序表的查找
  • vue 解决响应大数据表格渲染崩溃问题
  • Hdoop学习笔记(HDP)-Part.13 安装Ranger
  • Spring AOP记录接口访问日志
  • 分享89个节日PPT,总有一款适合您
  • PostgreSQL日志中的SQL记录时机 —— log_statement 和 log_min_duration_statement
  • Agent举例与应用
  • CentOS 7 配置tomcat
  • 如何优雅的关闭一个IIS站点
  • 弱网模拟工具