1. 程式人生 > >設計一個getMin功能的棧,如果面試官讓你寫一個數組類,一定不要用指標去管理new出來原生的陣列,那就是在給自己挖坑

設計一個getMin功能的棧,如果面試官讓你寫一個數組類,一定不要用指標去管理new出來原生的陣列,那就是在給自己挖坑

//設計實現一個getMin功能的棧

#include <iostream>

#include <stack>

using namespace std;

class GetMinStack
{
public:
    void push(int x)
    {
        if (DataStack.empty() && MinStack.empty())
        {
            MinStack.push(x);
        }
        else
        {
            if (x <= MinStack.top())
            {
                MinStack.push(x);
            }
            else
            {
                while (!MinStack.empty() && MinStack.top() < x)
                {
                    DataStack.push(MinStack.top());
                    MinStack.pop();
                }
                MinStack.push(x);
                while (!DataStack.empty())
                {
                    MinStack.push(DataStack.top());
                    DataStack.pop();
                }
            }
        }
    }
    void pop()
    {
        if(!MinStack.empty())
        {
            MinStack.pop();
        }
    }
    int getMin()
    {
        return MinStack.top();
    }
private:
    stack<int>  DataStack;
    stack<int>  MinStack;
};

int main()
{
    GetMinStack St;
    int arr[] = { 9, 2, 1, 2, };
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
        St.push(arr[i]);
    St.pop();
    cout << St.getMin() << endl;
}

相關推薦

設計一個getMin功能,如果面試個數一定不要指標管理new出來原生陣列就是在自己挖坑

//設計實現一個getMin功能的棧 #include <iostream> #include <stack> using namespace std; class GetMinStack { public:     void push(int x)

面試如果面試怎樣看待加班應該怎麼回答?

市場經濟機遇與挑戰並存,企業每臨重要關頭,為爭取主動搶佔先機而組織加班,作為員工應該充分理解,主動請戰保質保量加入突擊。當然作為企業應該努力避免此種狀況發生,突擊必然緊張 緊張產生忙亂,連續不斷地加班容易引起員工心理疲勞懈怠情緒,反而影響質量與效率。企業必須在管理上下功夫,努力做到高效八小時,達到緊湊有序

面試現場一個string哪個版本的?

之前的 文章中,我們詳細介紹過string類的深淺拷貝的實現以及引用計數,那麼如果,在面試過程中你該給面試官展示哪一種string類呢? 今天我們就來寫兩個適合面試中寫的string類 1,深拷貝 class MyString { public:

個數其中第i個元素是第i天給定股票的價格。設計一個演算法來找到最大的利潤最多可以完成兩個交易。

用四個變數來表示倆次交易的買入賣出,遍歷陣列,比較每次交易的利益,儲存最大的。 int maxProfit(vector<int> &prices) { int len=prices.size(); if(len

面試講講Linux核心的競爭與併發該如何回答?

@[TOC] # 核心中的併發和競爭簡介   在早期的 Linux核心中,併發的來源相對較少。早期核心不支援對稱多處理( symmetric multi processing,SMP),因此,導致併發執行的唯一原因是對硬體中斷的服務。這種情況處理起來較為簡單,但並不適用於為獲得更好的效能而

C語言個數實現類似JAVA語言中ArrayList的功能

此程式是在看過郝斌老師的資料結構與演算法的視訊後,自己用C語言實現的。整個程式比較簡單,適合入門資料結構時練手。 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #

react 如果redux中state不是個數修飾器怎麼組裝

export const courter = (state = 0, action) => { switch (action.type) { case ADD_ONE: return state + 1; case REMOVE_

演算法與資料機構學習_第一章.和佇列_1.設計一個有返回中最小元素功能

設計一個有getMin功能的棧(返回棧中的最小元素) 演算法要求:實現一個特殊的棧,在實現棧的基本功能的基礎上,新增能夠實現返回棧中最小元素的棧,要求演算法的時間複雜讀為O(1),即在常數時間內實現。 思路:在一個棧中在時間複雜讀度為O(1)返回棧中最小元素

設計一個功能

class -s 小功能 gpo 添加 str 想要 pan bsp 功能描述:為平臺公告添加置頂標識 1.前臺 書寫PRD文檔內容如下:    1.描述所要更改頁面的詳細入口    2.描述你要想修改或者設計的內容,添加原型圖(你要修改的內容是什麽,你想怎麽修改,修改後的

設計一個功能的MyTime

題目內容: 定義一個帶過載建構函式的日期類Date,資料成員有年、月、日;成員函式包括:一個帶引數的建構函式Date(int,int,int),一個不帶引數的建構函式(設定日期為1900年1月1日),一個按“年-月-日”格式顯示日期的函式,一個對資料成員賦值的函

給定個數它的第 i 個元素是支給定股票第 i 天的價格。 如果最多只允許完成筆交易(即買入和賣出支股票)設計一個算法來計算所能獲取的最大利潤。

pan stat 給定 arr 註意 turn 大於 交易 nbsp 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 註意你不能在買入股票前賣出股票。 示例 1

如果一個訊息佇列該如何進行架構設計

開發十年,就只剩下這套架構體系了! >>>   

如果一個訊息佇列該如何進行架構設計啊?說一下的思路

開發十年,就只剩下這套架構體系了! >>>   

面試設計一個第三方賬號登陸該如何實現?

名稱解釋 這裡的多賬戶區別於系統級別的,我們講的多賬戶系統是指,在我們網際網路應用當中,我們的應用會使用多個第三方賬號進行登入,必須現在常用的APP(網易雲音樂)登入方式包含:網易、微信、QQ 內容 通過這一篇文章, 可以學到:多使用者下面的技術方案細節,以及相應的表設計,流程設計。 不可以:與其他文章一樣,

騰訊面試問我Java中boolean型別佔用多少個位元組?我說一個面試我回家等通知

本文首發於微信公眾號:程式設計師喬戈裡 什麼是boolean型別,根據官方文件的描述: boolean: The boolean data type has only two possible values: true and false. Use this data type

美團面試問我一個字元的String.length()是多少我說是1面試回去好好學一下吧

本文首發於微信公眾號:程式設計師喬戈裡 public class testT { public static void main(String [] args){ String A = "hi你是喬戈裡"; System.out.printl

面試我手一個生產者消費者模式

不知道你是否遇到過面試官讓你手寫生產者消費者程式碼。別說,前段時間有小夥伴還真的遇到了這種情況。當時是一臉懵逼。 但是,俗話說,從哪裡跌倒就要從哪裡爬起來。既然這次被問到了,那就回去好好研究一下,爭取下一次不再被虐唄。 於是,今天我決定手敲一個生產者消費者模式壓壓驚。(因為我也不想以後被面試官血虐啊) 生產者

阿里面試我實現一個執行緒安全並且可以設定過期時間的LRU快取我蒙了!

目錄1. LRU 快取介紹2. ConcurrentLinkedQueue簡單介紹3. ReadWriteLock簡單介紹4.ScheduledExecutorService 簡單介紹5. 徒手擼一個執行緒安全的 LRU 快取5.1. 實現方法5.2. 原理5.3. put方法具體流程分析5.4. 原始碼6.

面試:請一個認為比較“完美”的單例

單例模式是保證一個類的例項有且只有一個,在需要控制資源(如資料庫連線池),或資源共享(如有狀態的工具類)的場景中比較適用。如果讓我們寫一個單例實現,估計絕大部分人都覺得自己沒問題,但如果需要實現一個比較完美的單例,可能並沒有你想象中簡單。本文以主人公小雨的一次面試為背景,循序漸進地討論如何實現一個較為“完美”