ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

641. Design Circular Deque

2022-03-31 07:00:20  阅读:157  来源: 互联网

标签:pre Deque return int list next 641 Design public


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有