zoukankan      html  css  js  c++  java
  • My Calendar I

      题目大意是实现一个类来管理图书,类的每个实例包含图书的start跟end属性(start<= x < end),确保每个实例的两个属性没有重叠范围。

      很容易想到二叉排序树,将每个实例看成一个结点,有三种情况:

      1.新插入结点的start大于P结点的end,则将新插入结点插入到P结点的右子树,P = P.left。

      2.新插入结点的end小于P结点的start,则将新插入结点插入到P结点的左子树,P = P.right。

      3.新插入结点的范围跟P结点的范围有重叠,则返回false。

      

      给出Java代码:

      

    class MyCalendar {
        private MyCalendar left, right;
        private int start, end, tag;
        private MyCalendar root;
        
        public MyCalendar() {
            this.root = null;
        }
        
        public MyCalendar(int start, int end) {
            this.start = start;
            this.end = end;
        }
        
        public boolean book(int start, int end) {
            if(root == null) {
                root = new MyCalendar(start, end);
            } else {
                MyCalendar p = root;
                MyCalendar pre = p;
                tag = 0;
                while(p != null) {
                    pre = p;
                    if(end <= p.start) {
                        tag = 0;
                        p = p.left;
                    } else if(start >= p.end){
                        tag = 1;
                        p = p.right;
                    } else {
                        return false;
                    }
                }
                
                if(tag == 0) {
                    pre.left = new MyCalendar(start, end);
                } else {
                    pre.right = new MyCalendar(start,end);
                }
            }
            return true;
        }
    }
    
    
    /**
     * Your MyCalendar object will be instantiated and called as such:
     * MyCalendar obj = new MyCalendar();
     * boolean param_1 = obj.book(start,end);
     */
  • 相关阅读:
    【hdu4057】 恨7不成妻
    【hdu3709】 Balanced Number
    【hdu3555】 Bomb
    【hdu2809】 不要62
    【bzoj3992】 SDOI2015—序列统计
    【uoj125】 NOI2013—书法家
    【bzoj1833】 ZJOI2010—count 数字计数
    【bzoj1026】 SCOI2009—windy数
    【bzoj2780】 Sevenk Love Oimaster
    【bzoj3930】 CQOI2015—选数
  • 原文地址:https://www.cnblogs.com/CGJobs/p/7931885.html
Copyright © 2011-2022 走看看