1
class Solution {
2
public boolean PredictTheWinner(int[] nums) {
3
return predictTheWinner(nums, 0, nums.length - 1, true, 0, 0);
4
}
5

6
private boolean predictTheWinner(
7
int[] nums, int start, int end, boolean isP1Turn, long p1Score, long p2Score) {
8
if (start > end) {
9
return p1Score >= p2Score;
10
}
11

12
boolean firstTry;
13
boolean secondTry;
14
if (isP1Turn) {
15
firstTry = predictTheWinner(nums, start + 1, end, false, p1Score + nums[start], p2Score);
16
secondTry = predictTheWinner(nums, start, end - 1, false, p1Score + nums[end], p2Score);
17

18
} else {
19
firstTry = predictTheWinner(nums, start + 1, end, true, p1Score, p2Score + nums[start]);
20
secondTry = predictTheWinner(nums, start, end - 1, true, p1Score, p2Score + nums[end]);
21
}
22
return isP1Turn ? (firstTry || secondTry) : (firstTry && secondTry);
23
}
24
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0