classSolution{public:boolPredictTheWinner(vector<int>&nums){constintn=nums.size();// dp[i][j] := max number you can get more than your opponent in nums[i..j]vector<vector<int>>dp(n,vector<int>(n));for(inti=0;i<n;++i)dp[i][i]=nums[i];for(intd=1;d<n;++d)for(inti=0;i+d<n;++i){constintj=i+d;dp[i][j]=max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1]);}returndp[0][n-1]>=0;}};
classSolution{publicbooleanPredictTheWinner(int[]nums){finalintn=nums.length;// dp[i][j] := max number you can get more than your opponent in nums[i..j]int[][]dp=newint[n][n];for(inti=0;i<n;++i)dp[i][i]=nums[i];for(intd=1;d<n;++d)for(inti=0;i+d<n;++i){finalintj=i+d;dp[i][j]=Math.max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1]);}returndp[0][n-1]>=0;}}
classSolution{public:boolPredictTheWinner(vector<int>&nums){constintn=nums.size();vector<int>dp=nums;for(intd=1;d<n;++d)for(intj=n-1;j-d>=0;--j){constinti=j-d;dp[j]=max(nums[i]-dp[j],// Pick left numnums[j]-dp[j-1]);// Pick right num}returndp[n-1]>=0;}};