当前位置: 首页 > 网络应用技术

[LeetCode 486.预测获胜者] -JavaScript(递归+DP)

时间:2023-03-09 10:35:56 网络应用技术

  注意:文章的部分内容和图片来自互联网。如果有侵权,请与我联系。

  作者:小型前端攻击城市狮子,首页:小型前端攻击城市狮子主页,资料来源:掘金

  GitHub:P-J27,CSDN:PJ希望成为攻击城市狮子的前端

  版权属于作者。对于业务重印,请与作者联系以获得授权。请指示非商业重印的来源。

  [LeetCode 486.预测获奖者] -javascript(递归+DP)为您提供了一个整数数组。玩家1和Player 2根据此数组设计了一个游戏。

  玩家1和玩家2轮流进行自己的回合,首先是球员1。一开始,两个球员的初始分数为0.在每回合中,玩家从阵列的任何端拿出一个数字(即,获得的数字将从数组中删除(阵列长度减少1)。玩家选择的数字将添加到他的分数中。当没有剩余的数字时,游戏结束了。

  如果玩家1可以成为赢家并返回真实。如果两个玩家得分相等,他们还认为玩家1是游戏的赢家,并返回真实。您可以假设每个玩家的游戏玩法都会最大化他的得分。

  示例1:

  输入:nums = [1,5,2]

  输出:false

  说明:一开始,可以从1和2中选择播放器1。

  如果他选择2(或1),则可以从1(或2)和5中选择播放器2。

  如果玩家2选择了5,则只有1(或2)可用于播放器1。

  因此,播放器1的最终分数为1 + 2 = 3,并且玩家2是5。因此,玩家1永远不会成为赢家并返回假。

  对这个问题的分析有下面的核心问题,解决问题并不是一个问题。

  可以说人们崩溃了。完成这个问题后,这相当于写三个问题。如果您在面试中遇到这样的问题,则应该了解面试官的意思,他对您不满意。

  描述的递归描述:diff返回(播放器1玩家2)分数差异。玩家1希望,越越好,越好,越小越好,越好。

  特定步骤:

  动态计划分析

  如果您假设播放器1在数组的任何部分中

  使用DP记录用户选择的答案。然后您可以得出以下公式

  如果我们在这里存储最大值,然后传输方程应为

  这样,您需要计算数组的总和,并且不需要麻烦。

  感谢您的阅读,希望为您提供帮助。如果文章是错误的或侵权的,则可以在评论区域保留一条消息,也可以在我的主页上添加一个公共帐户以与我联系。

  写作并不容易,如果您感觉良好,则可以“喜欢”+“评论”,谢谢您的支持?

  原始:https://juejin.cn/post/7101703439914106893