请使用下述操作来构建目标数组 target :
Push:从 list 中读取一个新元素, 并将其推入数组中。
Pop:删除数组中的最后一个元素。
如果目标数组构建完成,就停止读取更多元素。
题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的数字。
题目数据保证答案是唯一的。
[1,3],3
["Push","Push","Pop","Push"]
读取 1 并自动推入数组 -> [1] 读取 2 并自动推入数组,然后删除它 -> [1] 读取 3 并自动推入数组 -> [1,3]
[1,2,3], 3
["Push","Push","Push"]
[1,2],4
["Push","Push"]
只需要读取前 2 个数字就可以停止。
[2,3,4],4
["Push","Pop","Push","Push","Push"]
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param target int整型一维数组 * @param n int整型 * @return string字符串一维数组 */ // 模拟栈 function buildArray( t , n ) { let stk = [] let ans = [] for(let i=1, j=0;i<=n;i++) { stk.push(i) ans.push('Push') if(stk[stk.length-1] != t[j]) { stk.pop() ans.push('Pop') } else j++ } return ans } module.exports = { buildArray : buildArray };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # @param target int整型一维数组 # @param n int整型 # @return string字符串一维数组 # class Solution: def buildArray(self , target , n ): # write code here NOT_IN = ['Push', 'Pop'] IN = ['Push'] pre = 0 res = [] for v in target: if v <= n: res += NOT_IN * (v - pre - 1) + IN pre = v else: break return res