给定一组正整数 n,我们需要按顺序将这些数字逐个加入栈中。但在每次压入数字时,需要根据以下两种情况进行特殊处理:
x 和栈顶元素 y 相同,那么需要取出栈顶元素 y,并将一个新的数字 x + y(即 2 * x)压入栈中。x 和栈顶开始往下的若干个元素(至少 2 个)的和相等,那么需要将这些元素全部取出,并将一个新的数字 2 * x 压入栈中。有一位名叫小红的人,她特别爱喝茶。手头有 m 只古怪的杯子,每只杯子都能放入一个正整数。小红打算把这些杯子里的数字一个个压进栈里,不过她定了规矩:每当要把某个数字压进栈,若栈顶那个数跟紧挨着的前一个数一样,她就会把这两个数拿出来相加,再把加得的和压回去。此外,若栈顶那个数恰好等于它下面连续 k 个数的合计(1 ≤ k ≤ m),她同样会把这 k+1 个数拿出来相加,再把加得的和压回去。当然,上面两条规矩都对不上时,她就不会再动手。眼下小红把一串正整数按顺序压进栈里,请告诉她最后栈里还剩哪些数。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册