题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个取数组数的方法,就是弹出最左边的数,并把下一个数放末尾,直到所有数都被弹出。现在给出初始数组的顺序,使得按方法取出的数是递增顺序的。

思路分享

  • 本题有两个难点,第一个是读题,从本题我发现我已经有相当的时间没有好好读东西了,读到题目也心烦意乱,导致获取上面的题意都有些困难;

  • 第二个是逆思维,这题乍一看没思路,但是实际上要得到那个“初始顺序”,所需的最终的顺序和得到顺序的过程都有了,只要对着升序的数字执行倒过来的行动(把末位数提前,然后在左边加一个数)

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
class Solution:
def deckRevealedIncreasing(self, deck: List[int]) -> List[int]:
deck.sort()
q = deque()
while deck:
if q:
q.appendleft(q.pop())
q.appendleft(deck.pop())
#print(q)
return list(q)