麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

[leetcode]486. Predict the Winner

2019-11-14 08:48:33
字體:
供稿:網(wǎng)友

題目鏈接:https://leetcode.com/PRoblems/predict-the-winner/

Given an array of scores that are non-negative integers. Player 1 picks one of the numbers from either end of the array followed by the player 2 and then player 1 and so on. Each time a player picks a number, that number will not be available for the next player. This continues until all the scores have been chosen. The player with the maximum score wins.

Given an array of scores, predict whether player 1 is the winner. You can assume each player plays to maximize his score.

Example 1:

Input: [1, 5, 2]Output: FalseExplanation: Initially, player 1 can choose between 1 and 2. If he chooses 2 (or 1), then player 2 can choose from 1 (or 2) and 5. If player 2 chooses 5, then player 1 will be left with 1 (or 2). So, final score of player 1 is 1 + 2 = 3, and player 2 is 5. Hence, player 1 will never be the winner and you need to return False.

Example 2:

Input: [1, 5, 233, 7]Output: TrueExplanation: Player 1 first chooses 1. Then player 2 have to choose between 5 and 7. No matter which number player 2 choose, player 1 can choose 233.Finally, player 1 has more score (234) than player 2 (12), so you need to return True representing player1 can win.

Note:

1 <= length of the array <= 20.Any scores in the given array are non-negative integers and will not exceed 10,000,000.If the scores of both players are equal, then player 1 is still the winner.

方法一(超時):

class Solution{public:    bool PredictTheWinner(vector<int>& nums)    {        //vector[start][end]代表nums的頭索引為start,尾索引為end時player1得到的最大的score        vector<vector<int>> scores(20,vector<int>(20,0));        int sum=accumulate(nums.begin(),nums.end(),0);        int target=(sum%2)?sum/2+1:sum/2;        return maxScore(nums,0,nums.size()-1,scores)>=target;    }    int maxScore(vector<int>& nums,int start,int end,vector<vector<int>> scores)    {        if(start>end)            return 0;        if(start==end)            return nums[start];        if(scores[start][end])            return scores[start][end];        int res1=nums[start]+min(maxScore(nums,start+2,end,scores),maxScore(nums,start+1,end-1,scores));        int res2=nums[end]+min(maxScore(nums,start,end-2,scores),maxScore(nums,start+1,end-1,scores));        scores[start][end]=max(res1,res2);        return scores[start][end];    }};方法二(超時):

class Solution{public:    bool PredictTheWinner(vector<int>& nums)    {        //vector[start][end]代表nums的頭索引為start,尾索引為end時player1是否比player2大,即是否大于等于0        vector<vector<int>> scores(nums.size(),vector<int>(nums.size(),INT_MAX));        int res=maxScore(nums,0,nums.size()-1,scores);        return res>=0;    }    int maxScore(vector<int>& nums,int start,int end,vector<vector<int>> scores)    {        if(scores[start][end]==INT_MAX)            scores[start][end]=start==end?nums[start]:max(nums[start]-maxScore(nums,start+1,end,scores),            nums[end]-maxScore(nums,start,end-1,scores));        return scores[start][end];    }};方法三(方法二的非遞歸版):

class Solution{public:    bool PredictTheWinner(vector<int>& nums) {        //vector[start][end]代表nums的頭索引為start,尾索引為end時player1是否比player2大,即是否大于等于0        vector<vector<int>> scores(nums.size(), vector<int>(nums.size(), 0));        for(int i=0;i<nums.size()-1;i++)            scores[i][i]=nums[i];        for(int i=nums.size()-2;i>=0;i--)        {            for(int j=i+1;j<nums.size();j++)            {                scores[i][j]=max(nums[i]-scores[i+1][j],nums[j]-scores[i][j-1]);            }        }        return scores[0][nums.size()-1]>=0;    }};


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久影院一区二区三区 | 久章草在线观看 | 久久成人午夜视频 | 久久96国产精品久久久 | 日韩av日韩 | 免费毛片随便看 | 黄色成人短视频 | 国产精品爱久久久久久久 | 国语自产免费精品视频在 | 2021免费日韩视频网 | 在线中文字幕亚洲 | 国产亚洲精品久久777777 | 他也色在线视频 | 国产喷白浆10p | 草草免费视频 | 国产精品成人一区二区三区电影毛片 | 日本在线看片 | 999精品国产 | 黄色二区三区 | 免费看性xxx高清视频自由 | 成人午夜免费av | 国产免费乱淫av | 国产外围在线 | 国产视频第一区 | 国产在线精品91 | 日本在线播放一区二区 | 久久草在线视频 | 九一成人 | 天天躁狠狠躁夜躁2020挡不住 | 国产中出视频 | 91av国产在线 | 毛片大全在线观看 | 国产午夜亚洲精品午夜鲁丝片 | 91精品久久久久久久久网影视 | 羞羞答答影院 | 一级精品 | 亚洲成人在线视频网站 | 久久久久久久久久网 | 国产成人高清在线观看 | 色域tv | 国产亚洲精品久久久久久久久久 |