package problems.medium; import java.util.ArrayList; import java.util.List; import java.util.Stack; /** * Created by sherxon on 5/1/17. */ public class StackOfPlates { int threshold; List<Stack<Integer>> list=new ArrayList<>(); public void push(Integer n){ if(list.isEmpty())list.add(new Stack<>()); getAvailableStack().add(n); } public Integer pop(){ if(list.get(list.size()-1).size()==0) list.remove(list.get(list.size()-1)); return list.get(list.size()-1).pop(); } public Integer popAt(int index){ if(list.get(index).size()==0) list.remove(list.get(index)); return list.get(index).pop(); } private Stack<Integer> getAvailableStack() { if(list.get(list.size()-1).size() < threshold) return list.get(list.size()-1); list.add(new Stack<>()); return list.get(list.size()-1); } }