zoukankan      html  css  js  c++  java
  • LC 641. Design Circular Deque

    Design your implementation of the circular double-ended queue (deque).

    Your implementation should support following operations:

    • MyCircularDeque(k): Constructor, set the size of the deque to be k.
    • insertFront(): Adds an item at the front of Deque. Return true if the operation is successful.
    • insertLast(): Adds an item at the rear of Deque. Return true if the operation is successful.
    • deleteFront(): Deletes an item from the front of Deque. Return true if the operation is successful.
    • deleteLast(): Deletes an item from the rear of Deque. Return true if the operation is successful.
    • getFront(): Gets the front item from the Deque. If the deque is empty, return -1.
    • getRear(): Gets the last item from Deque. If the deque is empty, return -1.
    • isEmpty(): Checks whether Deque is empty or not. 
    • isFull(): Checks whether Deque is full or not.

    Example:

    MyCircularDeque circularDeque = new MycircularDeque(3); // set the size to be 3
    circularDeque.insertLast(1);			// return true
    circularDeque.insertLast(2);			// return true
    circularDeque.insertFront(3);			// return true
    circularDeque.insertFront(4);			// return false, the queue is full
    circularDeque.getRear();  			// return 2
    circularDeque.isFull();				// return true
    circularDeque.deleteLast();			// return true
    circularDeque.insertFront(4);			// return true
    circularDeque.getFront();			// return 4
    

    Note:

    • All values will be in the range of [0, 1000].
    • The number of operations will be in the range of [1, 1000].
    • Please do not use the built-in Deque library.
     

    Runtime: 112 ms, faster than 32.91% of Java online submissions for Design Circular Deque.

    class MyCircularDeque {
      private Deque<Integer> dq = new LinkedList<>();
      private int cap;
      /** Initialize your data structure here. Set the size of the deque to be k. */
      public MyCircularDeque(int k) {
        cap = k;
      }
    
      /** Adds an item at the front of Deque. Return true if the operation is successful. */
      public boolean insertFront(int value) {
        if(dq.size() == cap) return false;
        dq.offerFirst(value);
        return true;
      }
    
      /** Adds an item at the rear of Deque. Return true if the operation is successful. */
      public boolean insertLast(int value) {
        if(dq.size() == cap) return false;
        dq.offerLast(value);
        return true;
      }
    
      /** Deletes an item from the front of Deque. Return true if the operation is successful. */
      public boolean deleteFront() {
        if(dq.size() == 0) return false;
        dq.removeFirst();
        return true;
      }
    
      /** Deletes an item from the rear of Deque. Return true if the operation is successful. */
      public boolean deleteLast() {
        if(dq.size() == 0) return false;
        dq.removeLast();
        return true;
      }
    
      /** Get the front item from the deque. */
      public int getFront() {
        if(dq.size() == 0) return -1;
        return dq.peekFirst();
      }
    
      /** Get the last item from the deque. */
      public int getRear() {
        if(dq.size() == 0) return -1;
        return dq.peekLast();
      }
    
      /** Checks whether the circular deque is empty or not. */
      public boolean isEmpty() {
        return dq.size() == 0;
      }
    
      /** Checks whether the circular deque is full or not. */
      public boolean isFull() {
        return dq.size() == cap;
      }
    }
  • 相关阅读:
    springboot缓存-Ehcache
    springboot+spring data jpa 多数据源配置
    vue+element 上传图片控件
    springboot下载文件
    easyPoi导入带图片的excel
    内外网同时使用(宽带内网无线内网)
    mysql 8.0 安装
    搭建一个Vue前端项目
    mybatis反向代理自动生成mapper文件
    【1】idea Live Templates
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10260698.html
Copyright © 2011-2022 走看看