THE
問題
解決
コード
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.size()!= popV.size()) return false;
stack<int> in ;
int j = 0;
for(int i = 0; i<pushV.size();i++){
if(pushV[i]!=popV[j])in.push(pushV[i]);
else {
++j;
while((!in.empty())&&(in.top()==popV[j])){
in.pop();
++j;
}
}
}
return in.empty();
}
};
まとめと考察
- // while(!in.empty())&&(in.top()== popV [j])とwhile((in.top()== popV [j])&&(!in.empty() )違い。最初の判断は空で終了しますが、jを前に置くと、範囲外になります。ロジックは問題ありませんが、実際には範囲外の判断です。支払う必要があります。将来のデザインへの注目。