• Lc641_设计循环双端队列


    //设计实现双端队列。
    //你的实现需要支持以下操作:
    //
    //
    // MyCircularDeque(k):构造函数,双端队列的大小为k。
    // insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。
    // insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。
    // deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。
    // deleteLast():从双端队列尾部删除一个元素。如果操作成功返回 true。
    // getFront():从双端队列头部获得一个元素。如果双端队列为空,返回 -1。
    // getRear():获得双端队列的最后一个元素。 如果双端队列为空,返回 -1。
    // isEmpty():检查双端队列是否为空。
    // isFull():检查双端队列是否满了。
    //
    //
    // 示例:
    //
    // MyCircularDeque circularDeque = new MycircularDeque(3); // 设置容量大小为3
    //circularDeque.insertLast(1);			        // 返回 true
    //circularDeque.insertLast(2);			        // 返回 true
    //circularDeque.insertFront(3);			        // 返回 true
    //circularDeque.insertFront(4);			        // 已经满了,返回 false
    //circularDeque.getRear();  				// 返回 2
    //circularDeque.isFull();				        // 返回 true
    //circularDeque.deleteLast();			        // 返回 true
    //circularDeque.insertFront(4);			        // 返回 true
    //circularDeque.getFront();				// 返回 4
    // 
    //
    //
    //
    // 提示:
    //
    //
    // 所有值的范围为 [1, 1000]
    // 操作次数的范围为 [1, 1000]
    // 请不要使用内置的双端队列库。
    //
    // Related Topics 设计 队列
    
    package leetcode.editor.cn;
    
    //Java:设计循环双端队列
    public class P641DesignCircularDeque {
        public static void main(String[] args) {
    //        Solution solution = new P641DesignCircularDeque().new Solution();
            // TO TEST
    
    
            MyCircularDeque circularDeque = new P641DesignCircularDeque().new MyCircularDeque(71); // 设置容量大小为3
            circularDeque.insertFront(47);
            circularDeque.deleteLast();
            circularDeque.deleteLast();
    
    
        }
    
        //leetcode submit region begin(Prohibit modification and deletion)
        //删掉就是删掉,没删掉就是没删掉
        class MyCircularDeque {
            int size = 0;
            int[] elements = null;
    
            /**
             * Initialize your data structure here. Set the size of the deque to be k.
             */
            public MyCircularDeque(int k) {
                elements = new int[k];
            }
    
            /**
             * Adds an item at the front of Deque. Return true if the operation is successful.
             */
            public boolean insertFront(int value) {
                if (isFull()) {
                    return false;
                } else {
                    for (int i = size - 1; i >= 0; i--) {
                        elements[i + 1] = elements[i];
                    }
                    elements[0] = value;
                    size++;
                    return true;
                }
    
            }
    
            /**
             * Adds an item at the rear of Deque. Return true if the operation is successful.
             */
            public boolean insertLast(int value) {
                if (isFull()) {
                    return false;
                } else {
                    elements[size] = value;
                    size++;
                    return true;
                }
            }
    
            /**
             * Deletes an item from the front of Deque. Return true if the operation is successful.
             */
            public boolean deleteFront() {
                if (isEmpty()) {
                    return false;
                } else {
                    for (int i = 0; i < size - 1; i++) {
                        elements[i] = elements[i + 1];
                    }
                    size--;
                    return true;
                }
    
            }
    
            /**
             * Deletes an item from the rear of Deque. Return true if the operation is successful.
             */
            public boolean deleteLast() {
                if (isEmpty()) {
                    return false;
                } else {
                    elements[size - 1] = 0;
                    size--;
                    return true;
                }
            }
    
            /**
             * Get the front item from the deque.
             */
            public int getFront() {
                return !isEmpty() ? elements[0] : -1;
            }
    
            /**
             * Get the last item from the deque.
             */
            public int getRear() {
                return !isEmpty() ? elements[size - 1] : -1;
            }
    
            /**
             * Checks whether the circular deque is empty or not.
             */
            public boolean isEmpty() {
                return size == 0;
            }
    
            /**
             * Checks whether the circular deque is full or not.
             */
            public boolean isFull() {
                return size == elements.length;
            }
        }
    
    /**
     * Your MyCircularDeque object will be instantiated and called as such:
     * MyCircularDeque obj = new MyCircularDeque(k);
     * boolean param_1 = obj.insertFront(value);
     * boolean param_2 = obj.insertLast(value);
     * boolean param_3 = obj.deleteFront();
     * boolean param_4 = obj.deleteLast();
     * int param_5 = obj.getFront();
     * int param_6 = obj.getRear();
     * boolean param_7 = obj.isEmpty();
     * boolean param_8 = obj.isFull();
     */
    //leetcode submit region end(Prohibit modification and deletion)
    
    }
    
  • 相关阅读:
    Vitamio中文API文档(3)—— MediaController
    [活动]hhhchina.net很暴力,还有更好的投票方式吗?
    [anytao.activity]也来拉票,不只为评选
    [活动]Scott,来了
    写在2007,行胜于言
    《你必须知道的.NET》,评价和推荐
    [你必须知道的.NET]第十七回:貌合神离:覆写和重载
    [你必须知道的.NET]第十八回:对象创建始末(上)
    当选2008 Microsoft MVP,从好的开始继续
    [你必须知道的.NET]第十九回:对象创建始末(下)
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/13331272.html
Copyright © 2020-2023  润新知