当前位置: 首页 > news >正文

【数据结构-栈】力扣1441. 用栈操作构建数组

提示
给你一个数组 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 个数字就可以停止。

提示:
1 <= target.length <= 100
1 <= n <= 100
1 <= target[i] <= n
target 严格递增

代码

class Solution {
public:vector<string> buildArray(vector<int>& target, int n) {vector<string> res;int prev = 0;for(int& k : target){for(int num = 0; num < k - prev - 1; num++){res.emplace_back("Push");res.emplace_back("Pop");}res.emplace_back("Push");prev = k;}return res;}
};

时间复杂度:O(n)。Push 需要添加 O(n) 次。

空间复杂度:O(1)。除了保存结果的数组,其他只消耗常数空间。

采用模拟的方法,使用prev来记录target中上一个元素的值,然后就进行k-prev-1次循环来对数组res传入"Push"和"Pop",然后最后再传入"Push"。


http://www.mrgr.cn/news/33559.html

相关文章:

  • 图书管理系统
  • 什么是数据库视图(View)?视图和表有何区别?
  • 程序员软硬通吃的核心竞争力修炼指南
  • 如何在堆和栈上分别创建一个`QObject`子类对象
  • 用OPenCV分割视频
  • 【米哈游AI大模型“Glossa”正式完成备案,AI加持游戏行业开拓新赛道】
  • typedef的用法
  • 对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试
  • 机器学习算法那些事 | TPAMI 2024.9 | FeatAug-DETR:通过特征增强丰富DETRs的一对多匹配
  • 【人工智能】在大型活动中的应用案例
  • 带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信
  • Python 虚拟环境安装使用(Anaconda 完整实操版)
  • stable diffusion 神经网络插件 controlnet 的安装,很详细
  • 自学笔记之TVM编译器框架 ,核心特性,模型优化概述,AI应用落地
  • 【C++初阶】模版进阶
  • 6、论文阅读:水下图像增强基准数据集及其他数据集
  • go语言 swagger 查询 json 字段注释
  • REST-系统架构师(六十九)
  • mysql配置相关命令
  • 设计模式之策略模式例题