首页 > 编程语言 >天天学编程Day7

天天学编程Day7

时间:2024-11-04 18:44:54浏览次数:3  
标签:元素 函数 min 对象 Day7 编程 天天 num 构造函数

每日一道编程题

155. 最小栈

class MinStack {
public:
    // 存储栈中元素及其出现次数的映射
    map<int, int> m;
    // 存储实际栈元素的栈
    stack<int> s1;
    // 记录当前栈中的最小元素
    int min_num;

    MinStack() {
        // 初始化时将最小元素设为整型最大值
        min_num = INT_MAX;
    }

    void push(int val) {
        // 将元素入栈
        s1.push(val);
        // 更新元素在映射中的出现次数
        m[val]++;
        // 如果新入栈的元素小于当前最小元素,则更新最小元素
        if (val < min_num) min_num = val;
    }

    void pop() {
        int topval = s1.top();
        // 减少栈顶元素在映射中的出现次数
        m[topval]--;
        // 弹出栈顶元素
        s1.pop();
        // 如果弹出的元素是当前最小元素且其在映射中的出现次数变为 0
        if (topval == min_num && m[topval] == 0) {
            min_num = INT_MAX;
            // 重新寻找新的最小元素
            for (const auto& pair : m) {
                if (pair.second > 0 && pair.first < min_num) {
                    min_num = pair.first;
                    break;
                }
            }
        }
    }

    int top() {
        // 返回栈顶元素
        return s1.top();
    }

    int getMin() {
        // 返回当前栈中的最小元素
        return min_num;
    }
};

C++ 中类的三大特性是什么?请简要解释。

  • 封装
    • 解释:封装是将数据和操作数据的方法封装在一个类中,通过访问修饰符(如 public、private 和 protected)来控制对类成员的访问。
    • 作用:封装可以隐藏类的内部实现细节,提高代码的安全性和可维护性。外部代码只能通过类提供的公共接口来访问和操作类的成员,而不能直接访问类的私有成员,从而避免了对数据的意外修改和错误使用。
  • 继承
    • 解释:继承允许一个类(派生类)继承另一个类(基类)的属性和方法。派生类可以扩展和修改基类的功能,同时继承基类的特性。
    • 作用:继承可以实现代码的复用,减少重复代码的编写。通过继承,可以建立类之间的层次关系,使得代码更加清晰和易于理解。同时,继承也可以实现多态性,通过基类指针或引用来调用派生类的函数。
  • 多态
    • 解释:多态是指同一个操作作用于不同的对象可以有不同的表现形式。在 C++ 中,多态主要通过虚函数和函数重载来实现。
    • 作用:多态可以提高代码的灵活性和可扩展性。通过多态,可以根据对象的实际类型来调用相应的函数,而不需要在编译时确定具体的函数调用。这使得代码更加通用,可以适应不同类型的对象和变化的需求。

什么是构造函数和析构函数?它们的作用是什么?

  • 构造函数
    • 解释:构造函数是一种特殊的成员函数,它的名称与类名相同,没有返回类型。构造函数在对象创建时自动被调用,用于初始化对象的成员变量。
    • 作用:构造函数的主要作用是在对象创建时为对象分配内存,并对对象的成员变量进行初始化。构造函数可以有多个重载形式,以满足不同的初始化需求。通过构造函数,可以确保对象在创建时处于一个合法的状态。
  • 析构函数
    • 解释:析构函数也是一种特殊的成员函数,它的名称是在类名前加上波浪线(~),没有返回类型和参数。析构函数在对象销毁时自动被调用,用于释放对象占用的资源。
    • 作用:析构函数的主要作用是在对象销毁时释放对象占用的资源,如动态分配的内存、打开的文件等。析构函数可以确保对象在销毁时不会留下任何资源泄漏或未释放的资源。当对象超出作用域或被显式删除时,析构函数会自动被调用。

标签:元素,函数,min,对象,Day7,编程,天天,num,构造函数
From: https://blog.csdn.net/qq_73301411/article/details/143489128

相关文章

  • 【网络云计算】2024第45周小测第1次-Shell编程类
    文章目录1.1、CentOSStream9系统初始化的流程和步骤,步骤和指令对应,编写Shell脚本,并添加注释1.2、写出你所知道的所有的Shell编程的基本语法【网络云计算】2024第45周小测第1次-Shell编程类1.1、CentOSStream9系统初始化的流程和步骤,步骤和指令对应,编写Shell脚本......
  • 逻辑编程填词游戏
    逻辑编程接前面着色应用回溯倒水递归汉诺塔代码从helloworld开始填词游戏题目答案验证后话接前面着色应用让人眼前一亮。能不能解决其他冲突问题呢?回溯倒水也有冲突检测,一步一步试探。倒水逻辑跟着色很像。怎么写成逻辑编程代码呢?递归汉诺塔费尽心思,网上也......
  • 计算机存储单元bit。不同编程语言类型差异。
    计算机存储单元bit大部分计算机最小内存操作单元是字节,JE不同编程语言类型差异JEDRAM标准DQ位宽也经常按8bits为单位。英文字母ASCII码虽然可以优化为7位,但7不是一个计算机的好数字,按8位算是最优空间。当然,CPU也有......
  • 不懂编程技术能学软件开发吗?学软件开发如何开始呢?
    在当今数字化时代,软件开发已经成为一项重要的技能。许多人对学习软件开发感兴趣,但往往担心自己是否具备足够的编程技术。本文将探讨不懂编程技术的人是否能够学习软件开发,并提供一些建议和步骤,帮助他们开始学习软件开发。第一部分:不懂编程技术能否学习软件开发?编程技术的基础......
  • Python编程风格:使用语义更加明确的方法
    在软件开发中,编程风格是一个至关重要的方面,它不仅影响代码的可读性和可维护性,还直接关系到软件的质量和开发效率。在Python中,编程风格尤其重要,因为Python的设计哲学强调代码的可读性和简洁性。本文将探讨如何使用语义更加明确的方法来提升Python代码的可读性和可维护性,并提供具......
  • 【花雕学编程】Arduino RTOS 之时间片轮转调度
    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、......
  • Linux系统编程IPC通信之---守护进程讲解(很重要)
    绪论首先在正式介绍守护进程之前,这里先给大家介绍一下进程组和会话。进程组一组相关进程的集合,所有进程的标识符相同.会话一组相关进程组的集合,一个会话中的所有进程共享单个控制终端.在任意时刻,会话中的其实中一个进程组会成为终端的前台进程组.其他进程组会成为......
  • 网络编程 TCP编程 Linux环境 C语言实现
    所有基于数据传输通信的程序,都会被分成两种角色:1.服务端:又称为服务器server提供一种通信服务的进程基本工作过程是:1>接收请求数据2>处理请求数据3>发送处理结果2.客户端:client使用一种通信服务的进程基本工作过程是:1>组织请求数据2>发送请求数据3>接收请求回......
  • 编程小白如何成为大神?大学新生的最佳入门攻略
    编程小白如何成为大神?大学新生的最佳入门攻略如何选择适合自己的编程语言考虑兴趣方向如果对网页开发感兴趣,那么HTML、CSS和JavaScript是很好的选择。HTML用于构建网页的结构,CSS用于网页的样式设计,JavaScript则能为网页添加交互功能。例如,想要制作一个具有动画效果的网站......