pfwvan666

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最小栈设计并实现一个MinStack类,要求至少含有以下三种方法

一、push方法:将一个整数进行压栈

二、pop方法:弹出栈顶元素

三、getmin方法:输出栈内最小元素

输入格式:

第一行输入一个N,表示接下来要操作的数量

随后N行表示操作:

push方法后跟要压栈的元素

pop方法、getmin方法后不跟任何元素

说明:假设不包含其他无效输入,以及在执行getmin、pop方法时栈不为空

输出样例:

输出栈内最小元素

输入样例:

5
push 2
push 3
push 1
pop
getmin
 

输出样例:

2
 
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

 

这里我用的逃课法,直接用数据结构,分别定义两个数组,一个指令数组,一个是元素栈

 

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

struct zhan {//输入指令+元素
    char name[10];//指令
    int xh;//元素
};


int main()
{
    int n;//个数
    int b[n + 1];//栈内元素
    struct zhan a;
    cin >> n;
    int i, j;
    int count = 0;
    int min;

    
    for (i = 1; i <= n; i++) {
        cin>> a.name;
        if (strcmp(a.name, "push") == 0) {
            cin>>b[count];
            count++;
        }
        else if (strcmp(a.name, "pop") == 0) {
            count--;
        }
        else {
            min = 0;
            for (j = 1; j < count; j++) {
                if (b[min] > b[j]) {
                    min = j;
                }
            }
            cout<< b[min];
        }
    }
    return 0;
}

posted on 2022-09-13 21:03  澎湖湾  阅读(79)  评论(0)    收藏  举报