package com.coding.week9;
//import java.util.Stack;
import java.util.ArrayList;
import java.util.List;
/**
* 设计一个栈,支持栈的push和pop操作,以及第三种操作findMin, 它返回改数据结构中的最小元素
* finMin操作最坏的情形下时间复杂度应该是O(1) , 简单来讲,操作一次就可以得到最小值
* @author liuxin
*
*/
public class QuickMinStack {
List<Integer> elements = new ArrayList<>();
private int minNumIndex = 0;
private boolean isSmaller(int data) {
if (elements.isEmpty()) {
return true;
}
if (data < elements.get(minNumIndex)) {
return true;
}
return false;
}
public void push(int data) {
elements.add(data);
if (isSmaller(data)) {
minNumIndex = elements.size() - 1;
}
}
public int pop() {
return elements.remove(elements.size() - 1);
}
public int findMin() {
return elements.get(minNumIndex);
}
}