Skip to content

1441.用栈操作构建数组

ts
function buildArray(target: number[], n: number): string[] {
  const stack: number[] = []
  const actionStack: string[] = []

  for (let i = 1; i <= n; i++) {
    // 先入栈
    stack.push(i)
    actionStack.push('Push')

    // 看入栈索引位置 stack 的值与 target 的值作对比,如果不相等则出栈
    const index = stack.length - 1
    if (stack[index] !== target[index]) {
      stack.pop()
      actionStack.push('Pop')
    }

    // 如果 stack 的元素数量与 target 的元素数量相等,则表明 stack 与 target 相等,构造数组完成
    if (stack.length === target.length) {
      break
    }
  }
  return actionStack
}