class mystack{ //arr数组存放元素 private int arr[]; //minarr数组存放最小元素的下标 private int minarr[]; private int length; private int top=-1; private int mintop=-1; public mystack(int length){ this.length=length; arr=new int[length]; minarr=new int[length]; } public boolean push(int a){ if(top==-1){ top++; arr[top]=a; mintop++; minarr[mintop]=top; return true; }else if (top==length-1){ return false; }else { top++; arr[top]=a; if (a<arr[minarr[mintop]]){ minarr[++mintop]=top; } return true; } } public boolean pop(){ if(top==-1){ return false; }else { if (minarr[mintop]==top){ mintop--; } top--; return true; } } public int findMin(){ return arr[minarr[mintop]]; } }
java:提供一种数据结构提供栈push和pop以及第三种操作findMin,所有操作均以O(1)最坏情形运行
最新推荐文章于 2024-06-18 16:17:50 发布