其他分享
首页 > 其他分享> > 641. Design Circular Deque

641. Design Circular Deque

作者:互联网

My first solution - using ArrayList:

class MyCircularDeque {
    List<Integer> list = new ArrayList<>();
    int k ;

    public MyCircularDeque(int k) {
        this.k = k;
    }
    
    public boolean insertFront(int value) {
        if(list.size()<k){
           list.add(0, value);
        return true;
        }
        return false;
        
    }
    
    public boolean insertLast(int value) {
        if(list.size()<k){
            list.add(value);
            return true;
        }
        return false;
    }
    
    public boolean deleteFront() {
        if(list.size()>0){
            list.remove(0);
            return true;
        }
        return false;
    }
    
    public boolean deleteLast() {
        if(list.size()>0){
            list.remove(list.size()-1);
            return true;
        }
        return false;
    }
    
    public int getFront() {
         if(list.size()>0){
            return list.get(0);

        }
        return -1;
    }
    
    public int getRear() {
         if(list.size()>0){
            return list.get(list.size()-1);

        }
        return -1;
        
    }
    
    public boolean isEmpty() {
        return list.size()==0;
    }
    
    public boolean isFull() {
        return list.size()==k;
    }
}

My double linked list solution:

class MyCircularDeque {
    
    class DlinkedList{
        int val;
        DlinkedList pre;
        DlinkedList next;
        public DlinkedList(int val){
            this.val=val;
        }
        
    }

    DlinkedList list, head, tail;
    int k;
    int count=0;
    public MyCircularDeque(int k) {
        
        this.k = k;
        head = new DlinkedList(-1);
        tail = new DlinkedList(-1);
        head.next = tail;
        tail.pre = head;
    }
    
    public boolean insertFront(int value) {
        if(count<k){
            DlinkedList node = new DlinkedList(value);
            node.next=head.next;
            node.pre = head;
            head.next = node;
            node.next.pre=node;
            count++;
            return true;
        }
        else
            return false;
    }
    
    public boolean insertLast(int value) {
        if(count<k){
            DlinkedList node = new DlinkedList(value);
            node.pre= tail.pre;
            node.next=tail;
            tail.pre = node;
            node.pre.next=node;
            count++;
            return true;
        }
        else
            return false;
    }
    
    public boolean deleteFront() {
        if(count>0){
            head.next.next.pre=head;
            head.next = head.next.next;
            count--;
            return true;
        }else
            return false;
    }
    
    public boolean deleteLast() {
        if(count>0){
            tail.pre.pre.next = tail;
            tail.pre=tail.pre.pre;
            count--;
            return true;
        }else 
            return false;
    }
    
    public int getFront() {
        if(count>0)
            return head.next.val;
        else
            return -1;
    }
    
    public int getRear() {
        if(count>0)
            return tail.pre.val;
        else
            return -1;
    }
    
    public boolean isEmpty() {
        return count==0;
    }
    
    public boolean isFull() {
        return count==k;
    }
}

 

标签:pre,Deque,return,int,list,next,641,Design,public
来源: https://www.cnblogs.com/feiflytech/p/16080070.html