leetcode810. 黑板異或游戲(博弈論 - java)

黑板異或游戲

  • lc 810 - 黑板異或游戲
    • 題目描述
    • 博弈論
  • 動態規劃

lc 810 - 黑板異或游戲

難度 - 困難
原題鏈接 - 黑板異或游戲

題目描述

黑板上寫著一個非負整數數組 nums[i] 。
Alice 和 Bob 輪流從黑板上擦掉一個數字,Alice 先手。如果擦除一個數字后,剩余的所有數字按位異或運算得出的結果等于 0 的話,當前玩家游戲失敗。 另外,如果只剩一個數字,按位異或運算得到它本身;如果無數字剩余,按位異或運算結果為 0。
并且,輪到某個玩家時,如果當前黑板上所有數字按位異或運算結果等于 0 ,這個玩家獲勝。
假設兩個玩家每步都使用最優解,當且僅當 Alice 獲勝時返回 true。

示例1:
輸入: nums = [1,1,2]
輸出: false
解釋:
Alice 有兩個選擇: 擦掉數字 1 或 2。
如果擦掉 1, 數組變成 [1, 2]。剩余數字按位異或得到 1 XOR 2 = 3。那么 Bob 可以擦掉任意數字,因為 Alice 會成為擦掉最后一個數字的人,她總是會輸。
如果 Alice 擦掉 2,那么數組變成[1, 1]。剩余數字按位異或得到 1 XOR 1 = 0。Alice 仍然會輸掉游戲。

示例2:
輸入: nums = [0,1]
輸出: true

示例 3:
輸入: nums = [1,2,3]
輸出: true

提示:
1 <= nums.length <= 1000
0 <= nums[i] < 216

在這里插入圖片描述

博弈論

如果接觸過博弈論,對于這種「判斷先手后手的必勝必敗」的題目,博弈論方向是一個優先考慮的方向。
根據題意,如果某位玩家在操作前所有數值異或和為0,那么該玩家勝利。要我們判斷給定序列時,先手是處于「必勝態」還是「必敗態」,如果處于「必勝態」返回 True,否則返回 False。

對于博弈論的題目,通常有兩類的思考方式:
經驗分析:見過類似的題目,猜一個性質,然后去證明該性質是否可推廣。
狀態分析:根據題目給定的規則是判斷「勝利」還是「失敗」來決定優先分析「必勝態」還是「必敗態」時具有何種性質,然后證明性質是否可推廣。

關于這道題,其實有兩種情況需要討論,第一個給出的數組異或和是否是0.
1.是0時,那么先手直接獲勝了返回true,這是必勝情況。
2.不是0時,那么根據題意,都是最優解的拿值,那么肯定誰拿到最后一個值,誰就輸。分析誰拿最后一個值,就只需要討論數組長度的奇偶性就可以了。
奇數Alice 拿到最后一個必輸,偶數bob 拿到最后一個,Alice 必贏。

代碼:

    public boolean xorGame(int[] nums) {int sum = 0;//先算出異或和,來討論不同的情況for(int i : nums){sum ^= i;}//和為0 直接獲勝,不為0 討論數組長度奇偶性,奇數輸,偶數贏return sum == 0 || nums.length  % 2 == 0;}

動態規劃

leetcode375. 猜數字大小 II

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39662.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

談談網絡協議的定義、組成和重要性

個人主頁&#xff1a;insist--個人主頁?????? 本文專欄&#xff1a;網絡基礎——帶你走進網絡世界 本專欄會持續更新網絡基礎知識&#xff0c;希望大家多多支持&#xff0c;讓我們一起探索這個神奇而廣闊的網絡世界。 目錄 一、網絡協議的定義 二、網絡協議的組成 1、…

出于網絡安全考慮,印度啟用本土操作系統”瑪雅“取代Windows

據《印度教徒報》報道&#xff0c;印度將放棄微軟系統&#xff0c;選擇新的操作系統和端點檢測與保護系統。 備受期待的 "瑪雅操作系統 "將很快用于印度國防部的數字領域&#xff0c;而新的端點檢測和保護系統 "Chakravyuh "也將一起面世。 不過&#xf…

C++--類型轉換

1.什么是類型轉換 在傳統C語言中&#xff0c;由強制類型轉換和隱式類型轉換&#xff0c;隱式類型轉換&#xff0c;編譯器在在編譯階段自動處理&#xff0c;能轉換則轉換&#xff0c;強制類型轉換由用戶自己轉換。 缺陷&#xff1a; 轉換的可視性比較差&#xff0c;所有的轉換形…

Go語言中關鍵字type的多重應用場景詳解

當談及Go語言中的關鍵字type時&#xff0c;我們通常會想到用于定義結構體和接口的常見用法。然而&#xff0c;"type"關鍵字實際上有許多其他用法&#xff0c;本文將對其中幾種常見用法進行簡要總結記錄。 定義結構體和方法 在Go中&#xff0c;我們可以使用type來定…

運維監控學習筆記5

Linux的內存是虛擬內存&#xff0c;是物理內存和交換分區swap。 內存&#xff1a; 頁&#xff1a;4K&#xff0c; 硬盤&#xff1a;塊。 尋址&#xff1a; 空間&#xff1a;內存的合并。大頁內存。 free命令&#xff1a; [rootvm1 ~]# free -htotal used fre…

javap獲取Kotlin方法JNI方法簽名

獲取Kotlin方法簽名和JAVA不一樣的地方就是需要使用Kotlin 命令行編譯器生成.class文件&#xff1a; 編寫一個Kotlin類&#xff0c;添加JNI方法&#xff1a; class TestLib {external fun init(callBack: CallBack)interface CallBack{fun onData(count:Int,data:String)} }在…

cesium學習記錄08-鼠標繪制多邊形

上一篇學習了實體的一些基礎知識&#xff0c;這一篇來學習鼠標繪制實體多邊形的實現 一、方法一&#xff1a; 1&#xff0c;結果顯示 貼地&#xff1a; 不貼地&#xff1a; 2&#xff0c;方法全部代碼&#xff1a; 主方法&#xff1a; /*** 繪制多邊形* param {Object} op…

華為OD機試 - 公共子串計算(Java 2023 B卷 100分)

目錄 專欄導讀一、題目描述二、輸入描述三、輸出描述四、解題思路五、Java算法源碼六、效果展示 華為OD機試 2023B卷題庫瘋狂收錄中&#xff0c;刷題點這里 專欄導讀 本專欄收錄于《華為OD機試&#xff08;JAVA&#xff09;真題&#xff08;A卷B卷&#xff09;》。 刷的越多&…

VictoriaMetrics部署及vmalert集成釘釘告警

1、部署VictoriaMetrics cd /usr/local wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.65.0/victoria-metrics-amd64-v1.65.0.tar.gz mkdir victoria-metrics && tar -xvzf victoria-metrics-amd64-v1.65.0.tar.gz && \ mv …

論AI GPT跨境貿易架構及其應用

摘要 2023年初,我司啟動了智慧化跨境貿易供應鏈一體化平臺的建設工作。我在該項目中擔任系統架構設計師的職務,主要負責設計平臺系統架構和安全體系架構。該平臺以移動信息化發展為契機,采用”平臺+AI”的模式解決現有應用的集中移動化需求。平臺整體的邏輯復雜,對系統的高…

react之Hooks的介紹、useState與useEffect副作用的使用

react之Hooks的介紹、useState與useEffect副作用的使用 一、Hooks的基本介紹二、useState的使用2.1 簡單使用2.2 數組結構簡化2.3 狀態的讀取和修改2.3 組件的更新過程 三、useEffect的使用3.1 副作用介紹3.2 基本使用3.3 依賴3.4 不要對依賴項撒謊3.5 依賴項可以是空數組3.6 清…

ZZULIOJ 1193: 單科成績排序(結構體專題),Java

ZZULIOJ 1193: 單科成績排序&#xff08;結構體專題&#xff09;&#xff0c;Java 題目描述 有一學生成績表&#xff0c;包括學號、姓名、3門課程成績。請按要求排序輸出&#xff1a;若輸入1&#xff0c;則按第1門課成績降序輸出成績表&#xff0c;若輸入為i&#xff08;1<…

清風數學建模——擬合算法

擬合算法 文章目錄 擬合算法概念 確定擬合曲線最小二乘法的幾何解釋求解最小二乘法matlab求解最小二乘法如何評價擬合的好壞計算擬合優度的代碼 概念 在前面的篇幅中提到可以使用插值算法&#xff0c;通過給定的樣本點推算出一定的曲線從而推算出一些想要的值。但存在一些問題…

解決內網GitLab 社區版 15.11.13項目拉取失敗

問題描述 GitLab 社區版 發布不久&#xff0c;搭建在內網拉取項目報錯&#xff0c;可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…

QT網絡編程之TCP

QT網絡編程之TCP TCP 編程需要用到倆個類: QTcpServer 和 QTcpSocket。 #------------------------------------------------- # # Project created by QtCreator 2023-08-

mysql截取最后一個字符之前的數據

1、mysql截取最后一個字符之前的數據 select --截取斜杠之前的數據REVERSE(SUBSTR(REVERSE(SPNH-dfg-2012) ; --截取斜杠后的數據 INSTR(REVERSE(SPNH-fg-2012),-)1))2、mysql獲取最后一個字符后的數據 select SUBSTRING_INDEX(SPNH-dfg-2012,-,-1) 3、mysql更新某個字段…

SpringBoot 該如何預防 XSS 攻擊

XSS 漏洞到底是什么&#xff0c;說實話我講不太清楚。但是可以通過遇到的現象了解一下。在前端Form表單的輸入框中&#xff0c;用戶沒有正常輸入&#xff0c;而是輸入了一段代碼&#xff1a;</input><img src1 onerroralert1> 這個正常保存沒有問題。問題出在了列表…

驅動 實現三個燈的亮滅

1、編寫LED燈的驅動&#xff0c;可以控制三個燈&#xff0c;應用程序中編寫控制燈的邏輯&#xff0c;要使用自動創建設備節點機制 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x…

設計模式之責任鏈模式【Java實現】

責任鏈&#xff08;Chain of Resposibility&#xff09; 模式 概念 責任鏈&#xff08;chain of Resposibility&#xff09; 模式&#xff1a;為了避免請求發送者與多個請求處理者耦合在一起&#xff0c;于是將所有請求的處理者 通過前一對象記住其下一個對象的引用而連成一條…

什么是ServiceMesh(Istio一)

現在最火的后端架構無疑是微服務了&#xff0c;微服務將之前的單體應用拆分成了許多獨立的服務應用&#xff0c;每個微服務都是獨立的&#xff0c;好處自然很多&#xff0c;但是隨著應用的越來越大&#xff0c;微服務暴露出來的問題也就隨之而來了&#xff0c;微服務越來越多&a…