本文主要是介绍486. Predict the Winner | 486. 预测赢家(博弈论),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
https://leetcode.com/problems/predict-the-winner/
题解
这道题和 leetcode 877. Stone Game | 877. 石子游戏(递归/动态规划/数学解法) 比较像。一开始以为又是一个恒等问题,后来看了答案发现并不是。而且从数据规模上来看,这题用暴力是能通过的。
class Solution {public boolean PredictTheWinner(int[] nums) {if (nums.length % 2 == 0) return true; // 偶数个先手必胜else return getMaxScore(nums, 0, nums.length - 1) >= 0;}public int getMaxScore(int[] nums, int L, int R) { // 计算作为当前轮的先手,能比对方多得的分数if (L == R) return nums[L];int left = nums[L] - getMaxScore(nums, L + 1, R); // 选左边int right = nums[R] - getMaxScore(nums, L, R - 1); // 选右边return Math.max(left, right);}
}
这篇关于486. Predict the Winner | 486. 预测赢家(博弈论)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!