面试题30:包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)。

解题思路:难点在于获取min,需要一个辅助栈,该栈中存储当前栈最小的元素。

import java.util.ArrayList;
import java.util.List;

public class stackSolution {
    List<Integer> list = new ArrayList();
    List<Integer> listMin = new ArrayList();
    public void push(int number){
        if(list.isEmpty()) return;
        list.add(number);
        if(list.isEmpty())  listMin.add(number);
        else if(number<listMin.get(listMin.size()-1)) listMin.add(number);
        else listMin.add(listMin.get(listMin.size()-1));
    }

    public  int pop(){
        if(list.isEmpty()) return -1;
        int top = list.get(list.size()-1);
        list.remove(list.size()-1);
        listMin.remove(listMin.size()-1);
        return top;
    }

    public int getmin(){
        return listMin.get(listMin.size()-1);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容