算法打卡day15-用两个栈实现队列

48 阅读1分钟

描述

用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

数据范围:n≤1000

要求:存储n个元素的空间复杂度为O(n) ,插入与删除的时间复杂度都是O(1)

示例1

输入:

["PSH1","PSH2","POP","POP"]

返回值:

1,2

说明:

"PSH1":代表将1插入队列尾部
"PSH2":代表将2插入队列尾部
"POP“:代表删除一个元素,先进先出=>返回1
"POP“:代表删除一个元素,先进先出=>返回2   

示例2

输入:

["PSH2","POP","PSH1","POP"]

返回值:

2,1

代码实现

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param node int整型
 * @return 无
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
//尾部插入,头部删除
static int end_index = -1;
static int top_index = 0;
static int stack_size = 1000;
static int stack[1000];
void push(int node ) {
    // write code here
    if (end_index != stack_size - 1)
        stack[++end_index] = node;
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param 无
 * @return int整型
 */
int pop() {
    // write code here
    if (end_index != -1)
        return stack[top_index++];
    return -1;
}