日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode486. 预测赢家(动态规划)

發布時間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode486. 预测赢家(动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個表示分數的非負整數數組。 玩家1從數組任意一端拿取一個分數,隨后玩家2繼續從剩余數組任意一端拿取分數,然后玩家1拿,……。每次一個玩家只能拿取一個分數,分數被拿取之后不再可取。直到沒有剩余分數可取時游戲結束。最終獲得分數總和最多的玩家獲勝。

給定一個表示分數的數組,預測玩家1是否會成為贏家。你可以假設每個玩家的玩法都會使他的分數最大化。
示例 1:

輸入: [1, 5, 2]
輸出: False
解釋: 一開始,玩家1可以從1和2中進行選擇。
如果他選擇2(或者1),那么玩家2可以從1(或者2)和5中進行選擇。如果玩家2選擇了5,那么玩家1則只剩下1(或者2)可選。
所以,玩家1的最終分數為 1 + 2 = 3,而玩家2為 5。
因此,玩家1永遠不會成為贏家,返回 False。

解題思路

數組含義:dp[i][j]數組nums(i,j)的先手分數和后手分數的最大差
狀態轉移:dp[i][j]= Math.max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1])
兩種轉移狀態1.先手從左邊拿2.先手從右邊拿

代碼

class Solution {public boolean PredictTheWinner(int[] nums) {int n=nums.length;int[][] dp=new int[n][n];for(int i=n-2;i>=0;i--)for(int j=i+1;j<n;j++)dp[i][j]= Math.max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1]);return dp[0][n-1]>=0;} }

總結

以上是生活随笔為你收集整理的leetcode486. 预测赢家(动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。