1
1
package com .fishercoder .solutions ;
2
2
3
- /**
4
- * 486. Predict the Winner
5
- *
6
- * Given an array of scores that are non-negative integers.
7
- * Player 1 picks one of the numbers from either end of the array followed by the player 2 and then player 1 and so on.
8
- * Each time a player picks a number, that number will not be available for the next player.
9
- * This continues until all the scores have been chosen.
10
- * The player with the maximum score wins.
11
- * Given an array of scores, predict whether player 1 is the winner.
12
- * You can assume each player plays to maximize his score.
13
-
14
- Example 1:
15
- Input: [1, 5, 2]
16
- Output: False
17
- Explanation: Initially, player 1 can choose between 1 and 2.
18
- 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).
19
- So, final score of player 1 is 1 + 2 = 3, and player 2 is 5.
20
- Hence, player 1 will never be the winner and you need to return False.
21
-
22
- Example 2:
23
- Input: [1, 5, 233, 7]
24
- Output: True
25
- Explanation: Player 1 first chooses 1. Then player 2 have to choose between 5 and 7. No matter which number player 2 choose, player 1 can choose 233.
26
- Finally, player 1 has more score (234) than player 2 (12), so you need to return True representing player1 can win.
27
-
28
- Note:
29
- 1 <= length of the array <= 20.
30
- Any scores in the given array are non-negative integers and will not exceed 10,000,000.
31
- If the scores of both players are equal, then player 1 is still the winner.
32
- */
33
3
public class _486 {
34
4
35
5
public static class Solution1 {
@@ -40,7 +10,7 @@ public static class Solution1 {
40
10
* For player1 to win, he/she has to get more than what player2 gets.
41
11
* If we think from the prospective of one player, then what he/she gains each time is a plus,
42
12
* while, what the other player gains each time is a minus. Eventually if player1 can have a >0 total, player1 can win.
43
- *
13
+ * <p>
44
14
* Helper function simulate this process. In each round:
45
15
* if e==s, there is no choice but have to select nums[s]
46
16
* otherwise, this current player has 2 options:
0 commit comments