在这道题中,我们需要通过栈来模拟一个消除游戏的过程。游戏规则是:当数组中有连续三个相同的数字时,它们会被消除,并且这个过程会重复进行,直到数组中没有连续三个相同的数字为止。栈(Stack)作为一种后进先出(LIFO)的数据结构,非常适合解决这个问题。每当一个新数字进入时,我们可以通过栈顶检查是否满足消除条件,若满足就弹出栈顶的三个元素。
栈是一种后进先出(LIFO)结构,也就是最新压入栈的元素最先被弹出。在这个题目中,我们利用栈来存储元素,并在每次插入一个新元素后,检查栈顶是否有三个连续相同的元素,如果有则将其消除。
题目描述:
给定一个整数数组 arr
,你需要实现一个消除游戏。游戏的规则如下:
请你实现一个函数,返回最终的数组结果。
输入:
arr
,数组元素为 a_1, a_2......a_n
,其中 1≤n≤1000,−106≤ai≤106。输出:
[]
。输入:
1 2 3 3 3 2 1
输出:
1 2 2 1
输入:
1 1 1 2 2 2 3 3 3
输出:
[]
在这个示例中,原始数组为 [1, 2, 3, 3, 3, 2, 1]
。根据题目的规则,数组中有三个连续的 3
,因此这三个 3
会被消除。经过处理后,剩余的元素是 1
、2
和 1
。最终,输出的数组结果为 1 2 1
,表示最终的数组状态。