我偶然发现了以下问题:
给定带有整数的卡片的有序列表(例如,
[1,24,3,4,5]
),两张 玩家轮流打牌.第一名选手先来.无论何时 玩家拿到一张偶数的牌,他们颠倒了 剩下的牌,游戏继续.当所有的牌都被拿走时, 他们计算他们的总和.金额较大的玩家获胜.如果 打成平局,1号玩家获胜.编写一个程序,给定以下顺序 纸牌,输出胜利者.
我用指针来完成这道题.创建两个指针i = 0
和j = n-1
,其中n
是牌的总数.创建另一个指针k
来跟踪您所在的位置.每当我遇到一张偶数牌,我就会在i
和j
之间切换.
我编写了一个可以工作的函数,但它需要O(N),因为我确实需要遍历整个列表.有没有更快的方法来做这件事?