【Leetcote&感想】155. 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.

設計一個在固定時間內支持push,pop,top和檢索最小元素的棧。

  • push(x) -- 將元素x推入棧
  • pop() -- 刪除棧頂元素
  • top() -- 得到棧頂元素
  • getMin() -- 在棧中檢索最小元素

 

 

舉例說明

 

Input
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]

Output
[null,null,null,null,-3,null,0,-2]

Explanation
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // return -3
minStack.pop();
minStack.top();    // return 0
minStack.getMin(); // return -2

 

限制

 

Methods poptop and getMin operations will always be called on non-empty stacks.

方法pop, top和getMin將由非空棧調用。

 

一點感想

 

       這道題沒啥難的,但我耗得時間很長。原因就是舉例中返回的是[null,null,null,null,-3,null,0,-2],我以爲就是最後得到的數組長度與方法執行數相等,無形中走偏了方向,還增加了題目難度。麻煩的是null是用於指針,表示不指向任何地址,它套用在整形上等於賦值0,但是0在這個題目中也是可賦值之一,所以就無法區分數組中哪個元素是未初始化哪個元素值是0,那就更不用談刪除棧頂元素了。後來才意識到,題目想要的就是棧,不帶null的棧。所以測試下來應該是這樣的。

    MinStack *minStack = minStackCreate();
	minStackPush(minStack,-2);
	minStackPush(minStack,0);
	minStackPush(minStack,-3);
	StringStack(minStack);//toString
	printf("%d\n",minStackGetMin(minStack)); // return -3
	minStackPop(minStack);
	printf("%d\n",minStackTop(minStack));    // return 0
	StringStack(minStack);//toString
	minStackFree(minStack);

唉,把我蠢得呀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章