155. 最小栈

155. 最小栈_第1张图片

 

要设计一个能在常数时间内检索到最小元素的栈,可以使用两个栈来实现。

  1. 一个栈用来存储正常的元素。
  2. 另一个栈用来存储当前最小值。

具体实现步骤如下:

  1. 使用一个变量min_val来存储当前最小值,默认为无穷大。
  2. push操作时,首先将元素压入正常的栈中。然后判断元素是否小于等于min_val,如果是,则将元素同时压入最小值栈中,并更新min_val为当前元素值。
  3. pop操作时,先从正常的栈中弹出元素,然后判断该元素是否等于最小值栈的栈顶元素,如果是,则将最小值栈的栈顶元素也弹出。
  4. top操作直接返回正常栈的栈顶元素。
  5. getMin操作直接返回最小值栈的栈顶元素。

由于每个操作都只需要对两个栈进行一次操作,所以其时间复杂度均为O(1)。

155. 最小栈_第2张图片

 

 155. 最小栈_第3张图片

 

 

 

你可能感兴趣的:(数据结构)