找出陣列中每個數的右邊第一個比它大的數
阿新 • • 發佈:2019-01-02
#include <bits/stdc++.h> using namespace std; vector<int> findMax(vector<int>num) { if(num.size()==0)return num; vector<int>res(num.size()); int i=0; stack<int>s; while(i<num.size()) { if(s.empty()||num[s.top()]>=num[i]) { s.push(i++); } else { res[s.top()]=num[i]; s.pop(); } } while(!s.empty()) { res[s.top()]=INT_MAX; s.pop(); } for(int i=0; i<res.size(); i++) cout<<res[i]<<endl; return res; } int main() { vector<int>p(9); for(int i=0; i<p.size(); i++) p[i]=i%3; findMax(p); return 0; }