1.题目
题目链接:LINK
2.题解
思路:模拟出栈过程
先入数据,再看看是不是这个数据与popV一致出掉,再继续入,直到入完数据。如果栈种还有剩余数据,则表明false,如果没有剩余数据,则代表true
图解如下:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型vector
* @param popV int整型vector
* @return bool布尔型
*/
bool IsPopOrder(vector<int>& pushV, vector<int>& popV)
{
// 先搞一个栈
stack<int> st;
int push_i = 0, pop_i = 0;
//开始入数据
while(push_i < pushV.size())
{
st.push(pushV[push_i]);
push_i++;
//每次入完数据之后看看与删除的是否匹配,如果匹配就删除,不匹配继续入数据
while(!st.empty() && st.top() == popV[pop_i])
{
pop_i++;
st.pop();
}
}
//如果栈里还有数据,就代表false,如果栈刚好与popV抵消了,那就是true
if(st.empty()) return true;
else return false;
}
};
3.总结
这个题难点是思路,掌握了思路其实就很好写了。
EOF