1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public boolean PredictTheWinner(int[] nums) { return predictTheWinner(nums, 0, nums.length - 1, 1) >= 0; }
private int predictTheWinner(int[] nums, int start, int end, int flag) { if (start == end) { return nums[start] * flag; } int left = predictTheWinner(nums, start + 1, end, -flag) + nums[start] * flag; int right = predictTheWinner(nums, start, end - 1, -flag) + nums[end] * flag; if (flag == 1) { return Math.max(left, right); } else { return Math.min(left, right); } } }
|