GitHub CLI 源码构建实战:从克隆仓库到跨平台交叉编译,详解 cli/cli 的构建系统
2026/9/6 23:09:27
都是删除冗余元素
都是往容器末尾添加冗余元素,从末尾取需要的元素。
对于当前元素也要考虑到冗余元素
例题:
intn,a;stack<int>st;voidsolve(){cin>>n;for(inti=1;i<=n;i++){cin>>a;while(!st.empty()&&st.top()>=a){st.pop();}if(st.empty())cout<<-1<<" ";else{cout<<st.top()<<" ";}st.push(a);}}例题:154. 滑动窗口
intn,k,a[1000009];deque<int>q;voidsolve(){cin>>n>>k;for(inti=1;i<=n;i++){cin>>a[i];}// minfor(inti=1;i<=n;i++){if(i>=k+1){if(q.size()&&q.front()==a[i-k]){q.pop_front();}}while(q.size()&&q.back()>a[i]){q.pop_back();}q.push_back(a[i]);if(i>=k){cout<<q.front()<<" ";}}cout<<endl;q.clear();// maxfor(inti=1;i<=n;i++){if(i>=k+1){if(q.size()&&q.front()==a[i-k]){q.pop_front();}}while(q.size()&&q.back()<a[i]){q.pop_back();}q.push_back(a[i]);if(i>=k){cout<<q.front()<<" ";}}cout<<endl;}classMinStack{private:stack<int>st;stack<int>st_min;public:MinStack(){}voidpush(intvalue){st.push(value);if(st_min.empty()||value<=st_min.top()){st_min.push(value);}}voidpop(){if(st.top()==st_min.top()){st_min.pop();}st.pop();}inttop(){returnst.top();}intgetMin(){returnst_min.top();}};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(value); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */