力扣1441. 用栈操作构建数组
题目本质是:
从1 到n的整数流中一个一个读,构造出target这个数组,能多Push但不允许多留值,所以必须用 Pop 删除不要的值。
关键是弄清楚流程然后模拟而不是立马写代码,我直接上手写,结果是思路不清晰,费好大劲才转过来。
正确做法应该是静下心来,用纸笔写一写流程,非常容易搞清楚的。
class Solution {
public:int cnt=0;stack<int> s;vector<string> buildArray(vector<int>& target, int n) {vector<string> ans;for(int i=1;i<=n;i++){if(cnt>=target.size()){break;}if(target[cnt]!=i){s.push(i);ans.push_back("Push");s.pop();ans.push_back("Pop");}else{s.push(i);ans.push_back("Push");cnt++;}}return ans;}
};