c++テスト問題
10312 ワード
スタックの圧入、ポップアップシーケンス方法:シミュレーション法は直接シミュレーションすればよい.ポップアップ前の値が先にスタックに入るので、ここではスタックで補助します.
#include
#include
#include
using namespace std;
/**
* @brief pushV popV, .
* @param pushV .
* @param popV .
*/
bool IsPopOrder(vector<int> pushV, vector<int> popV)
{
stack<int> st;
int i = 0, j = 0;
while (i < pushV.size())
{
/* code */
if (pushV[i] != popV[j]){
st.push(pushV[i++]);
}else{
++i, ++j;
while (!st.empty() && st.top() == popV[j])
{
/* code */
st.pop();
++j;
}
}
}
return st.empty();
}
int main()
{
cout << IsPopOrder({1,2,3,4,5}, {4,5,1,2,3}) << endl;
return 0;
}
/**
* @brief , 。.
* @param pHead .
*/
ListNode *deleteDuplication(ListNode *pHead)
{
ListNode *vhead = new ListNode(-1);
vhead->next = pHead;
ListNode *pre = vhead, *cur = pHead;
while (cur){
if (cur->next && cur->val == cur->next->val){
cur = cur->next;
while (cur->next && cur->val == cur->next->val){
cur = cur->next;
}
cur = cur->next;
pre->next = cur;
}
else
{
pre = cur;
cur = cur->next;
}
}
return vhead->next;
}