use std::cmp::max; impl Solution { pub fn predict_the_winner(nums: Vec) -> bool { let mut dp = vec![vec![0; nums.len()]; nums.len()]; // initialize for (i, &num) in nums.iter().enumerate() { dp[i][i] = num; } // carry on the DP for d in 1..nums.len() { for l in 0..nums.len() - d { let r = l + d; dp[l][r] = max(nums[l] - dp[l + 1][r], nums[r] - dp[l][r - 1]); } } dp[0][nums.len() - 1] >= 0 } }