leetcode打卡 486. 预测赢家

https://leetcode-cn.com/problems/predict-the-winner/

给出一个非负数组,两个人轮流选择从数组的左端或右端拿数,第一个人拿到的总和不低于第二个人则获胜。


如果数组的长度是偶数,那么第一个人可以挑选奇数位置之和与偶数位置之和的较大者(注意平局也算胜利),永远立于不败之地,可先行处理。


考虑整个数组剩下从 i 到 i+j (含i+j)的一段时,先手的人比后手的人还能多取得的最大分数为t[i][j],那么t[0][n-1]就是第一人总优势。

如果 j==0 , 当然有:

t[i][0]=nums[i]

否则,选左边,就是nums[i] - t[i+1][j-1],选右边,就是nums[i+j] - t[i][j-1].

所以t[i][j]=max(nums[i] - t[i+1][j-1] , nums[i+j] - t[i][j-1]).


class Solution {
public:
    bool PredictTheWinner(vector& nums) {
        if(nums.size()%2==0){return 1;}
        vector> temp;
        temp.resize(nums.size());
        for(int i=0;i=0;
    }
};
展开阅读全文

页面更新:2024-05-15

标签:左端   后手   先手   奇数   偶数   立于不败之地   之和   平局   数组   总和   赢家   长度   分数   较大   优势   位置   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top