《微軟面試題》設計包含min函式的棧

2021-06-02 12:26:17 字數 1143 閱讀 7822

設計包含min函式的棧。

定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。

要求函式min、push以及pop的時間複雜度都是o(1)。

**如下:

stack.h

#pragma once

#include //simulation stack datastruct

templateclass node

t data;

node * pre;

bool operator >(const t & t)

return false;

}};templateclass stack

node* cur;

void pushback(node* node)

void popback()

node* min(int destmin)

else

}assert(cur != null);

if (cur->data != destmin)

return cur;

}};

man.cpp

#include "stack.h"

#include "stdlib.h"

#include typedef node_node;

typedef stack_stack;

int getmin(int *num,int len)

} }return num[0];

}int _tmain(int argc, _tchar* argv)

; int a[10]=;

for (int i=0;i<10;i++)

//use pop check min

int _min = getmin(a,10);

//printf("\ndest min=%d\n",_min);

_node * p = mystack.min(_min);

if (p != null)

assert(_min == p->data);

getchar();

return 0;

}

cpp通過 氣泡排序檢查最小值 和 stack.getmin 比較。

面試題 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 思路 push 和pop肯定都是符合要求的,那麼min該怎麼辦呢?常數時間,那麼就必須空間換時間了。那麼就來乙個輔助棧吧,如果棧元素也有序號的話,那麼就是說在主棧的序...

程式設計師面試題精選 02 設計包含min函式的棧

程式設計師面試題精選 02 設計包含min函式的棧 題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 分析 這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。...

程式設計師面試題精選 01 設計包含min函式的棧

題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 分析 這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後push...