题目
思路
这题十分简单,因为目标数组是严格递增,所以就是从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%的用户,不知道是否有优化空间,还是这次提交结果比较低,再次提交
应该只是提交的问题,这题所要用到的空间只是为了保存结果数组,所以也没什么优化空间了