Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) — Push element x onto stack.
- pop() — Removes the element on top of the stack.
- top() — Get the top element.
- getMin() — Retrieve the minimum element in the stack.
解题思路:
主要是取得当前最小值的问题。我们可以用1个动态数组min存储当前最小值。若新压入的元素大于动态数组min最后1个元素,不做任何操作。否则(小于或等于)就压入min中。出栈的时候,若出栈元素等于min最后1个元素,则min数组出栈。这样便实现了常量时间找到栈中的最小值了。下面是代码:
class MinStack {
public:
MinStack(){
capcity=2;
data = new int[capcity];
size=0;
minCapcity=2;
min = new int[minCapcity];
minSize = 0;
}
~MinStack(){
delete[] data;
delete[] min;
}
void push(int x) {
if(size>=capcity){
int* p=data;
capcity = 2*capcity;
data=new int[capcity];
std::memcpy(data, p, sizeof(int)*size);
delete[] p;
}
data[size++]=x;
if(minSize==0){
min[minSize++]=x;
}else if(min[minSize⑴]>=x){
if(minSize>=minCapcity){
int* p=min;
minCapcity = 2*minCapcity;
min = new int[minCapcity];
std::memcpy(min, p, sizeof(int)*minSize);
delete[] p;
}
min[minSize++]=x;
}
}
void pop() {
if(size>0){
size–;
if(data[size]==min[minSize⑴]){
minSize–;
}
}else{
throw exception();
}
}
int top() {
if(size>0){
return data[size⑴];
}else{
throw exception();
}
}
int getMin() {
return min[minSize⑴];
}
private:
int size;
int capcity;
int* min;
int minSize;
int minCapcity;
int* data;
};
public:
MinStack(){
capcity=2;
data = new int[capcity];
size=0;
minCapcity=2;
min = new int[minCapcity];
minSize = 0;
}
~MinStack(){
delete[] data;
delete[] min;
}
void push(int x) {
if(size>=capcity){
int* p=data;
capcity = 2*capcity;
data=new int[capcity];
std::memcpy(data, p, sizeof(int)*size);
delete[] p;
}
data[size++]=x;
if(minSize==0){
min[minSize++]=x;
}else if(min[minSize⑴]>=x){
if(minSize>=minCapcity){
int* p=min;
minCapcity = 2*minCapcity;
min = new int[minCapcity];
std::memcpy(min, p, sizeof(int)*minSize);
delete[] p;
}
min[minSize++]=x;
}
}
void pop() {
if(size>0){
size–;
if(data[size]==min[minSize⑴]){
minSize–;
}
}else{
throw exception();
}
}
int top() {
if(size>0){
return data[size⑴];
}else{
throw exception();
}
}
int getMin() {
return min[minSize⑴];
}
private:
int size;
int capcity;
int* min;
int minSize;
int minCapcity;
int* data;
};
波比源码 » [LeetCode] Min Stack
buy levaquin without prescription generic levaquin
avodart without prescription purchase celecoxib online cheap order ondansetron 4mg
oral spironolactone 100mg cheap finasteride 5mg diflucan pill
buy ampicillin 250mg for sale buy ampicillin 250mg without prescription order erythromycin 250mg online cheap
fildena 100mg us careprost allergy nasal spray order robaxin 500mg generic
suhagra 50mg canada order sildenafil 50mg online estrace 1mg ca
lamotrigine canada retin cream brand oral retin gel
purchase tadalis generic cheap tadalafil buy voltaren 100mg for sale
arimidex usa order clarithromycin pills buy sildenafil pill
cialis 20mg kaufen ohne rezept sildenafil 50mg generika sildenafil 50mg fГјr frauen
purchase modafinil pills order provigil 100mg without prescription diamox cheap
altace 10mg sale order avapro online cheap astelin 10 ml uk
order generic catapres 0.1mg catapres order order generic spiriva
buy olmesartan online depakote over the counter order acetazolamide generic
cheap isosorbide isosorbide online order buy telmisartan 80mg for sale
cialis 20mg oral fluoxetine order online viagra 25 mg
buy cialis 40mg online cheap cialis 20mg cheap buy symmetrel without prescription
provigil 200mg brand stromectol 3mg cheap ivermectina 6 mg
purchase fluvoxamine without prescription purchase glucotrol generic order glipizide 5mg
cialis usa sildenafil australia sildenafil 50mg oral
chloroquine generic chloroquine online order purchase baricitinib online
buy norvasc 5mg for sale amlodipine medication order tadalafil 5mg for sale
cost clozaril 100mg order clozapine 100mg sale dexamethasone order
sildenafil overnight delivery viagra for sale cost lisinopril 2.5mg
linezolid for sale buy linezolid 600mg generic play poker online free
prilosec 10mg canada help writing a paper play poker online for money
website to write essays professional paper writers purchase viagra online cheap
aristocort ca purchase claritin without prescription buy generic desloratadine
order cialis 40mg sale cheapest viagra buy generic sildenafil
order domperidone without prescription buy tetracycline 250mg pill buy cyclobenzaprine 15mg pill
buy baclofen 10mg online cheap buy baclofen 10mg generic buy toradol 10mg without prescription
gloperba us colchicine pill poker online real money
buy ranitidine 150mg pill purchase celebrex online cost celecoxib
casino games win real money online roulette game real money free online blackjack
order flomax 0.4mg generic order aldactone 100mg generic order spironolactone
tadalafil 5mg uk cipro cost buy cipro 500mg pill
simvastatin sale zocor for sale online proscar 1mg usa
cephalexin oral cleocin 300mg sale erythromycin brand
viagra 100mg pills for sale order tadalafil 5mg sale tadalafil 10mg us
roulette online real money parx casino online tadalafil 40mg us
buy desyrel 50mg for sale purchase aurogra for sale purchase sildenafil online
deltasone 5mg for sale amoxil online order amoxil 250mg cheap
casino bonus top erection pills tadalafil 40mg brand
online gambling slots games buy modafinil 200mg modafinil uk
cheap sildenafil rhinocort online order purchase budesonide pills
tadalafil 20mg us cheap diclofenac 100mg purchase indomethacin sale
purchase lamisil pill generic terbinafine buy amoxicillin 250mg generic
order biaxin 500mg generic buy antivert 25mg for sale buy meclizine pill
naprosyn 500mg brand naprosyn 250mg uk prevacid 30mg cost
buy montelukast 5mg online order viagra pills sildenafil buy online
tadalafil 10mg ca buy cialis 40mg cialis 40mg price
play casino online free casino free slot games online
ivermectin 3mg oral symmetrel 100 mg oral order avlosulfon 100mg pill
adalat 10mg tablet buy fexofenadine pills purchase fexofenadine pill
play roulette cheap online pharmacy assignments for sale
order altace generic buy etoricoxib generic cheap etoricoxib 60mg
order doxycycline sale doxycycline 200mg pill buy cleocin without prescription
carvedilol buy online ditropan 5mg ca oral amitriptyline
amoxicillin 1000mg us amoxicillin 250mg us stromectol ivermectin tablets
purchase nortriptyline online order generic paroxetine 10mg paroxetine 10mg drug
fenofibrate price order tricor pills cheap generic viagra
order esomeprazole online buy furosemide 100mg buy lasix 40mg
order minocycline generic order generic minocin terazosin over the counter
order clomid 100mg generic buy clomid pills prednisolone 40mg ca
buy isotretinoin 10mg online cheap buy generic ampicillin 500mg ampicillin 500mg price
sildenafil 100mg cost generic fildena buy finasteride 5mg generic
ivermectin 12 mg pills deltasone 10mg brand order prednisone 10mg pills
buy ondansetron 8mg online cheap amoxil 250mg uk trimethoprim usa
buy accutane online cheap cheap amoxicillin generic azithromycin 500mg drug
provigil cost purchase lisinopril online metoprolol 50mg for sale
avodart for sale keflex 250mg cheap orlistat 120mg canada
doxycycline 200mg tablet order monodox for sale zovirax oral
buy azathioprine 25mg without prescription order azathioprine 25mg pill naprosyn price
oxybutynin 2.5mg drug buy oxybutynin 2.5mg without prescription buy trileptal 600mg for sale
buy levaquin sale zyban 150 mg without prescription buy generic zyban 150mg
buy zyrtec online order cetirizine 5mg order zoloft 50mg online cheap
brand cenforce 100mg chloroquine over the counter glucophage 1000mg cost
buy letrozole pills for sale viagra sildenafil 50mg sildenafil 50mg oral
ventolin 2mg canada cheap levothroid for sale purchase synthroid generic
buy serophene generic buy vardenafil 10mg online oral plaquenil 400mg
order albendazole 400 mg online cheap buy generic albendazole online order medroxyprogesterone online
losartan without prescription cozaar for sale online order topamax pill
buy imitrex 25mg generic order generic imitrex dutasteride usa
order betnovate without prescription purchase betamethasone buy sporanox without a prescription
ipratropium 100mcg sale buy ipratropium generic buy generic linezolid 600 mg
nateglinide 120mg pills buy nateglinide sale buy candesartan 8mg generic
buy simvastatin pills for sale order valacyclovir generic viagra pills
buy carbamazepine cheap buy ciprofloxacin pill purchase lincocin generic
cheap tadalafil pills cialis drug viagra mail order us
duricef 500mg usa finasteride 5mg sale proscar 1mg ca
estradiol 2mg cheap buy cheap minipress order prazosin for sale
order mebendazole online cheap tadalafil 10mg pill order tadalis sale
cost cleocin 300mg purchase cleocin purchase sildenafil for sale
order avanafil 100mg online order tadalafil 20mg pills diclofenac generic
indomethacin 75mg capsule buy generic terbinafine online buy cefixime online cheap
order amoxicillin 250mg without prescription clarithromycin for sale oral biaxin 250mg
arava price buy arava 10mg generic buy sulfasalazine 500 mg pill
order cialis 40mg online tadalafil generic cialis online
azithromycin price azithromycin 250mg without prescription oral gabapentin
cheap furosemide order albuterol inhaler buy ventolin 2mg for sale
oral altace 10mg buy generic arcoxia order generic etoricoxib 60mg
acetazolamide 250mg price order isosorbide online purchase azathioprine sale
buy lanoxin 250mg for sale molnupiravir canada cheap molnupiravir
naproxen 500mg oral omnicef 300mg cheap prevacid 15mg ca
buy singulair 10mg online avlosulfon 100 mg uk buy generic avlosulfon