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;
}