1441. 用栈操作构建数组

  • 本题非常简单,一个简单的模拟题

解题思路:

  • 如果两个相邻数字相差不为1,那么对两个数字的差值减1进行 “Push”“Pop”
  • 如果两个相邻数字相差不1,那么直接 “Push”即可
  • 举例:
    • 若为 1 3 5 7 8 的话
    • 则为 13 中间差值为 2 则需要一个 “Push”“Pop”2 入栈之后出栈,之后才能将 3 入栈,以此类推便可得到后面的序列
    • 78 差值为 1 ,只需要 “Push” 便可以

正确代码:

class Solution {
public:
    vector<string> ax;
    vector<string> buildArray(vector<int>& target, int n) {
        int m=target.size();
        for(int i=0;i<m;i++)
        {
            int x=0;
            if(i==0)
            {
                x=target[i]-0;
            }
            else
            {
                x=target[i]-target[i-1];
            }   
            for(int j=0;j<x-1;j++)
            {
                ax.push_back("Push");
                ax.push_back("Pop");
            }
            ax.push_back("Push");
        }
        return ax;
    }
};

复杂度分析:

  • 时间复杂度为O(n);
  • 空间复杂度为O(n);
posted on 2022-10-16 14:33  叶落偏多雨  阅读(39)  评论(0)    收藏  举报