【每日一题】1441. 用栈操作构建数组 2022/10/15

题目

1441. 用栈操作构建数组

思路

这题十分简单,因为目标数组是严格递增,所以就是从1到n,如果目标数组中存在这个数,就把这个数放进栈里面,如果不在,就把这个数放进栈里面再拿出来。不管什么情况下,要么是push,要么就是push,pop,不可能出现连续的pop。这题也只是简单模拟栈的操作,只要理解题目十分简单。时间复杂度O(n)。代码如下

class Solution {
public:
    vector<string> buildArray(vector<int>& target, int n) {
        vector<string> ans;
        int cur = 1;
        for (int i = 0; i < target.size(); i ++) {
            while (cur < target[i]) {
                ans.push_back("Push");
                ans.push_back("Pop");
                cur ++;
            }
            ans.push_back("Push");
            cur ++;
        }
        return ans;
    }
};

提交结果

 不过看内存消耗只打败了20%的用户,不知道是否有优化空间,还是这次提交结果比较低,再次提交

应该只是提交的问题,这题所要用到的空间只是为了保存结果数组,所以也没什么优化空间了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++中,使用new运算符可以动态地分配内存来创建数组。可以使用new运算符来创建单个对象或对象数组。使用new运算符创建数组的语法如下:new type [size],其中type是要创建的对象类型,size是数组的大小。使用new运算符创建数组时,需要注意以下几点: 1.使用new运算符创建数组时,需要在数组大小后面加上方括号[]。 2.使用new运算符创建数组时,需要在类型后面加上括号(),并在括号中指定构造函数的参数。 3.使用new运算符创建数组时,需要在类型后面加上大括号{},并在大括号中指定构造函数的参数。 4.使用new运算符创建数组时,需要在类型后面加上大括号{},并在大括号中指定对象的初始值。 下面是一些使用new运算符创建数组的示例: 1.创建一个包含5个int类型元素的数组: int *p = new int; 2.创建一个包含5个int类型元素的数组,并将它们初始化为0: int *p = new int(); 3.创建一个包含5个int类型元素的数组,并将它们初始化为1、2、3、4、5: int *p = new int{1, 2, 3, 4, 5}; 4.创建一个包含5个int类型元素的数组,并将它们初始化为0、1、2、3、4: int *p = new int{}; 5.创建一个包含3个Acct类型元素的数组,并使用默认构造函数初始化它们: Acct *p = new Acct; 6.创建一个包含3个Acct类型元素的数组,并使用带参数的构造函数初始化它们: Acct *p = new Acct{Acct(34.98,2), Acct(131.4,2), Acct(521.1,2)}; 7.创建一个包含3个Acct类型元素的数组,并使用带参数的构造函数初始化它们: Acct *p = new Acct{{34.98,2}, {131.4,2}, {521.1,2}};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夜大疯小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值