486. Predict the Winner Medium

@problem@discussion
#Array#Math#Dynamic Programming#Recursion#Game Theory



1/**
2 * [486] Predict the Winner
3 *
4 * You are given an integer array nums. Two players are playing a game with this array: player 1 and player 2.
5 * Player 1 and player 2 take turns, with player 1 starting first. Both players start the game with a score of 0. At each turn, the player takes one of the numbers from either end of the array (i.e., nums[0] or nums[nums.length - 1]) which reduces the size of the array by 1. The player adds the chosen number to their score. The game ends when there are no more elements in the array.
6 * Return true if Player 1 can win the game. If the scores of both players are equal, then player 1 is still the winner, and you should also return true. You may assume that both players are playing optimally.
7 *  
8 * Example 1:
9 * 
10 * Input: nums = [1,5,2]
11 * Output: false
12 * Explanation: Initially, player 1 can choose between 1 and 2. 
13 * If he chooses 2 (or 1), then player 2 can choose from 1 (or 2) and 5. If player 2 chooses 5, then player 1 will be left with 1 (or 2). 
14 * So, final score of player 1 is 1 + 2 = 3, and player 2 is 5. 
15 * Hence, player 1 will never be the winner and you need to return false.
16 * 
17 * Example 2:
18 * 
19 * Input: nums = [1,5,233,7]
20 * Output: true
21 * Explanation: Player 1 first chooses 1. Then player 2 has to choose between 5 and 7. No matter which number player 2 choose, player 1 can choose 233.
22 * Finally, player 1 has more score (234) than player 2 (12), so you need to return True representing player1 can win.
23 * 
24 *  
25 * Constraints:
26 * 
27 * 	1 <= nums.length <= 20
28 * 	0 <= nums[i] <= 10^7
29 * 
30 */
31pub struct Solution {}
32
33// problem: https://leetcode.com/problems/predict-the-winner/
34// discuss: https://leetcode.com/problems/predict-the-winner/discuss/?currentPage=1&orderBy=most_votes&query=
35
36// submission codes start here
37
38impl Solution {
39    pub fn predict_the_winner(nums: Vec<i32>) -> bool {
40        false
41    }
42}
43
44// submission codes end
45
46#[cfg(test)]
47mod tests {
48    use super::*;
49
50    #[test]
51    fn test_486() {
52    }
53}
54


Back
© 2025 bowen.ge All Rights Reserved.