判断是否为正确出栈顺序


bool fun(vector& track, vector& nums) {
    stack t;
    int i = 0,j=0;
    for (int i = 0; i < nums.size();i++) {
        if (t.empty()||t.top() != track[j]) {
            t.push(nums[i]);
        }
        else {
            t.pop();
            j++,i--;//使得i的值在下一循环不变
        }

    }
    while (!t.empty()&&t.top() == track[j]) {
		//判断条件有top()这种一定要加越界判断,且写在top()判断句前面
        t.pop();
        j++;
    }
    return t.empty();
}
//nums为进栈顺序,判断track是否合理。