- 本题非常简单,一个简单的模拟题
解题思路:
- 如果两个相邻数字相差不为1,那么对两个数字的差值减1进行 “Push” 和 “Pop”
- 如果两个相邻数字相差不1,那么直接 “Push”即可
- 举例:
- 若为 1 3 5 7 8 的话
- 则为 1 和 3 中间差值为 2 则需要一个 “Push” 和 “Pop” 将 2 入栈之后出栈,之后才能将 3 入栈,以此类推便可得到后面的序列
- 而 7 和 8 差值为 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);