classSolution{public:intdp[21][21];intsum(constvector<int>&nums,intL,intR){intsum=0;for(inti=L;i<=R;i++){sum+=nums[i-1];}returnsum;}intdfs(intL,intR,constvector<int>&nums){if(dp[L][R]!=-1){returndp[L][R];}if(L==R){returndp[L][R]=nums[L-1];}returndp[L][R]=...
leetcode 486. Predict the Winner class Solution { public: bool predictTheWinner(vector<int>& nums) { int m = nums.size(); // f[i][j]表示(i,j)区
public class Solution { // 状态转移方程:dp[i][j] = max(nums[i] - dp[i + 1][j], nums[j] - dp[i][j - 1]) public boolean PredictTheWinner(int[] nums) { int len = nums.length; int[][] dp = new int[len][len]; // dp[i][j]:作为先手,在区间 nums[i..j] 里进行...
486. 预测赢家 预测赢家? 递归求解~ class Solution { public: bool PredictTheWinner(vector<int>& nums) { return helper(nums,0,0,1); } bool helper(vector<int> nums,int sum1,int sum2,int player){ if(nums.empty()) return sum1>=sum2; else if(nums.size()==1){ if(player==1) retu...
class Solution: def PredictTheWinner(self, nums: List[int]) -> bool: import functools @functools.lru_cache(None) def dfs(left, right): if right < left: return 0 return max( nums[left] + min(dfs(left + 2, right), dfs(left + 1, right - 1)), nums[right] + min(dfs(left, ri...
classSolution{public:vector<vector<int>>dirs{{-1,0},{0,1},{1,0},{0,-1}};voidcleanRoom(Robot&robot){unordered_set<string>visited;helper(robot,0,0,0,visited);}voidhelper(Robot&robot,int x,int y,int dir,unordered_set<string>&visited){robot.clean();visited.insert(to_string(x)+"-...
https://www.acwing.com/solution/leetcode/content/2588/ 我们先将手中的球用哈希表来存储一下,然后看桌上的球能否在哈希表里的球添加后消除,然后消除后递归处理剩下的。中间记录需要的球数,用来更新需要球数的最小值。如果最小值超出了手中球的个数,则无法消除。
1classSolution {23publicbooleanPredictTheWinner(int[] nums) {4int[][] dp =newint[nums.length][nums.length];5dp[dp.length - 1][dp.length - 1] = nums[nums.length - 1];6for(intleft = dp.length - 2; left >= 0; left--) {7for(intright = left; right < dp.length; right++)...
class Solution { public: bool PredictTheWinner(vector<int> &nums) { return helper(0, nums.size() - 1, nums) >= 0; } int helper(int beg, int end, vector<int> &nums) { if (beg >= end) return nums[beg]; return max(nums[beg] - helper(beg + 1, end, nums), nums[end] -...
class Solution { public: bool PredictTheWinner(vector<int>& nums) { int low=0; int high=nums.size()-1; return solve(nums,0,nums.size()-1)>=0; } int solve(vector<int>& nums,int s,int e){ if(s==e){ return nums[e]; ...