题目:
初看题目或许会迷茫,其实仔细理一理题意没有那么复杂。
我们用例二来举例子,说明他为何是false。
数组一:1 2 3 4 5
数组二:4 3 5 1 2
我们入栈 1 2 3 4 出栈 4 3入栈 5 出栈 5 这时候我们发现要出栈的元素为2 而不是1 ,因此不和规则。这点接触过栈的朋友应该都知道。
思路:用数组模拟,用一个多余的数组来模拟栈,这样我们就可以对这个数组操作从而实现,对栈规则的模拟。
代码
/*利用数组模拟*/
bool validateStackSequences(int* pushed, int pushedSize, int* popped, int poppedSize){
int* stack_array= (int *)malloc(sizeof(int) * pushedSize),stack_size=0,i;
for(i=0;i<pushedSize;++i) {
stack_array[stack_size] = pushed[i];
stack_size+=1;
while(stack_size != 0 && stack_array[stack_size - 1] == *popped)
popped++,stack_size--;//这里用两个条件判断
}
//若符合规则,stack_size一定为0
return stack_size == 0;
}