题目

给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。
请使用下述操作来构建目标数组 target :
Push:从 list 中读取一个新元素, 并将其推入数组中。
Pop:删除数组中的最后一个元素。
如果目标数组构建完成,就停止读取更多元素。
题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的数字。
请返回构建目标数组所用的操作序列。
题目数据保证答案是唯一的。
示例 1:
输入:target = [1,3], n = 3
输出:[“Push”,“Push”,“Pop”,“Push”]
解释:
读取 1 并自动推入数组 -> [1]
读取 2 并自动推入数组,然后删除它 -> [1]
读取 3 并自动推入数组 -> [1,3]
示例 2:
输入:target = [1,2,3], n = 3
输出:[“Push”,“Push”,“Push”]
示例 3:
输入:target = [1,2], n = 4
输出:[“Push”,“Push”]
解释:只需要读取前 2 个数字就可以停止。
示例 4:
输入:target = [2,3,4], n = 4
输出:[“Push”,“Pop”,“Push”,“Push”,“Push”]
提示:
1 <= target.length <= 100
1 <= target[i] <= 100
1 <= n <= 100
target 是严格递增的
来源:力扣(LeetCode)

解题思路

  既然给定的target是严格递增的,那么我们只需要从前往后遍历生成的序列即可,当遇到的值不等于当前的target元素,则直接压入栈然后再弹出,若是等于的话,只需要压入栈。或者将序列改造成队列,一直出队对比即可。

class Solution:def buildArray(self, target: List[int], n: int) -> List[str]:operating=[]i=1j=0while i<n+1 and j<len(target):if i==target[j]:operating.append('Push')j+=1i+=1else:operating.extend(['Push','Pop'])i+=1return operating

class Solution:def buildArray(self, target: List[int], n: int) -> List[str]:operating=[]Q=deque(range(1,n+1))i=0while Q and i<len(target):temp=Q.popleft()if temp==target[i]:operating.append('Push')i+=1else:operating.extend(['Push','Pop'])return operating

LeetCode简单题之用栈操作构建数组相关推荐

  1. Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言)

    Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言) ** 题目: ** 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2 ...

  2. 5404. 用栈操作构建数组

    2020-05-10 1.题目描述 用栈操作构建数组 2.题解 我们可以发现,由于元素是按照顺序进行操作的,所以我们直接可以看该元素是否在target数组中,如果 在的话,就直接push,不在的话就进 ...

  3. 【leetcode刷题】70.最少操作使数组递增——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 如果不限制对某个数进行+1 而是运行+1 或者-1 .那么本题怎么该如何解呢? --leetcode此题热评 前言 哈喽,大家好, ...

  4. LeetCode 1441. 用栈操作构建数组

    1. 题目 给你一个目标数组 target 和一个整数 n. 每次迭代,需要从 list = {1,2,3-, n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...

  5. LeetCode简单题之检查两个字符串数组是否相等

    题目 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  6. LeetCode简单题之删除一个元素使数组严格递增

    题目 给你一个下标从 0 开始的整数数组 nums ,如果 恰好 删除 一个 元素后,数组 严格递增 ,那么请你返回 true ,否则返回 false .如果数组本身已经是严格递增的,请你也返回 tr ...

  7. LeetCode简单题之检查字符串是否为数组前缀

    题目 给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 . 字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的 ...

  8. LeetCode简单题之在长度 2N 的数组中找出重复 N 次的元素

    题目 给你一个整数数组 nums ,该数组具有以下属性: nums.length == 2 * n. nums 包含 n + 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复 ...

  9. Leetcode刷题笔记:栈与队列篇

    基础知识 栈和队列的原理大家应该很熟悉了,队列是先进先出,栈是先进后出. 如图所示: 那么我这里再列出四个关于栈的问题,大家可以思考一下.以下是以C++为例,使用其他编程语言的同学也对应思考一下,自己 ...

最新文章

  1. 现在的年轻人。。。到处都是套路。。。
  2. ARM WFI和WFE指令
  3. 工业用微型计算机(28)-dos和bios功能调用(2)-int 21h
  4. 真是,原来可以这样啊
  5. java标签用法详解_介绍一个javaWeb自定义标签的用法详解
  6. Altium Designer哪里下载和导入元件库_图文教程
  7. 【软件工程】IS的三级管理
  8. 通过已存在vender文件夹还原composer.json文件
  9. 数据结构(线性表)——神奇的幻方
  10. Unity Contrib Project和资料
  11. 【优化算法】头脑风暴优化算法(BSO)【含Matlab源码 497期】
  12. 和大家分享一款使用PHP+MYSQL搭建在线教育系统源码
  13. MATLAB学习 之 创建向量
  14. jeb 高级教程之动态调试
  15. HDS F900装机小结
  16. 配置 DNS over HTTPS阻止DNS污染
  17. pixel 刷入自己编译的Android 8.0 安装Xposed 显示 Verified Boot (dm-verity) prevents the device from booting
  18. 邮箱客户端如何登录?
  19. 遗传算法介绍(内含实例)
  20. RPG角色生成器(C++)

热门文章

  1. docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name
  2. Java Calendar.add()方法的使用,参数含义。指定时间差。
  3. 伍六七带你学算法——被忽视的数学公式
  4. 用Construct 2制作入门小游戏~
  5. Box2d 基础入门知识
  6. grep 的特殊使用
  7. fastbert解读
  8. SQLALchemy之Python连接MySQL
  9. python中break和continue的区别
  10. 从底层吃透java内存模型(JMM)、volatile、CAS