关闭

微软100题40题-设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。

786人阅读 评论(0) 收藏 举报
分类:
/**
 * <p>File:Test_40.java</p>
 * <p>Title: </p>
 * <p>Description:</p>
 40.百度研发笔试题(栈、算法)
引用自:zp155334877
1)设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
2)一串首尾相连的珠子(m个),有N种颜色(N<=10),
设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。
并分析时间复杂度与空间复杂度。
3)设计一个系统处理词语搭配问题,比如说 中国 和人民可以搭配,
则中国人民 人民中国都有效。要求:
  *系统每秒的查询数量可能上千次;
  *词语的数量级为10W;
  *每个词至多可以与1W个词搭配
当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。
 */
public class Test_40_1
{
    public static  class Stack{
        private int [] popPushArray=new int[1024];
        private int indexPopPush=-1;
        private int[] minArray=new int[1024];
        private int indexMin=-1;
        
        public void push(int value){
            indexPopPush++;
            popPushArray[indexPopPush]=value;
            if(indexMin==-1){
                indexMin++;
                minArray[indexMin]=value;
            }else{
                if(minArray[(indexMin)]>value){
                    indexMin++;
                    minArray[indexMin]=value;
                }
            }
        }
        
        public Integer pop(){
            if(indexPopPush==-1){
                return null;
            }
            int value=popPushArray[indexPopPush];
            indexPopPush--;
            if(value==minArray[indexMin]){
                indexMin--;
            }
            return value;
        }
        
        public Integer min(){
            if(indexMin<0){
                return null;
            }
            int value=minArray[indexMin];
            indexMin--;
            return value;
        }
    }
    public static void main(String[] args)
    {
        Stack s=new Stack();
        s.push(1);
        s.push(-1);
        s.push(10);
        s.push(-2);
        s.pop();
        s.push(-3);
        s.push(3);
        s.pop();
        s.pop();
        System.out.println(s.pop());
        System.out.println(s.min());
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:596173次
    • 积分:8602
    • 等级:
    • 排名:第2221名
    • 原创:289篇
    • 转载:332篇
    • 译文:1篇
    • 评论:122条
    博客专栏
    文章分类
    最新评论