在Python中寻找数组删除游戏的获胜者
假设Amal和Bimal正在玩一个游戏,他们有一个带有一些数字的数组A。游戏规则如下:
- Bimal始终会开始游戏
- 每次轮到一个玩家删除数组中的最大元素,并且删除元素右侧的所有其他元素。
- 他们交替进行
- 删除所有剩余元素的玩家将赢得比赛。
因此,如果输入类似于nums=[5,2,6,3,4],那么输出将为Amal,因为首先Bimal将删除[6,3,4],因此数组将变为[5,2],然后Amal将删除所有内容,因此他将成为获胜者。
要解决这个问题,我们将遵循以下步骤:
- maximum := -1
- count := 0
- 对于nums中的每个a,执行以下操作
- 如果a > maximum非零,则
- count := count + 1
- maximum := a
- 如果a > maximum非零,则
- 如果count mod 2与0相同,则
- 返回“Amal”
- 返回“Bimal”
示例
让我们看一下以下实现,以更好地理解-
def solve(nums):
maximum = -1
count = 0
for a in nums:
if a > maximum:
count += 1
maximum = a
if count % 2 == 0:
return "Amal"
return "Bimal"
nums=[5,2,6,3,4]
print(solve(nums))
输入
[5,2,6,3,4]
输出
Amal