请使用下述操作来构建目标数组 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字符串一维数组
#
class Solution:
def buildArray(self , target , n ):
answer = []
m = len(target)
index = 0
for i in range(1, n + 1):
if index == m:
break
answer.append("Push")
if i < target[index]:
answer.append("Pop")
else:
index += 1
return answer /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @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