[LeetCode] 641. Design Circular Deque

Chobby·약 18시간 전

LeetCode

목록 보기
1078/1078

😎풀이

  1. 환형 큐 초기화 변수는 deque를 빈 배열로, maxSizek로 설정
  2. 배열 특성을 활용하여 unshiftpush로 앞 뒤 입력
  3. 배열 특성을 활용하여 shiftpop으로 앞 뒤 제거
  4. 빈 배열이나 꽉 찬 배열을 length로 확인
  5. 인덱스를 통해 맨 앞 혹은 맨 뒷 요소 반환
class MyCircularDeque {
    private deque: number[]
    private maxSize: number
    constructor(k: number) {
        this.deque = []
        this.maxSize = k
    }

    insertFront(value: number): boolean {
        if(this.isFull()) return false
        this.deque.unshift(value)
        return true
    }

    insertLast(value: number): boolean {
        if(this.isFull()) return false
        this.deque.push(value)
        return true
    }

    deleteFront(): boolean {
        if(this.isEmpty()) return false
        this.deque.shift()
        return true
    }

    deleteLast(): boolean {
       if(this.isEmpty()) return false
        this.deque.pop()
        return true 
    }

    getFront(): number {
        return this.deque[0] ?? -1
    }

    getRear(): number {
        return this.deque.at(-1) ?? -1
    }

    isEmpty(): boolean {
        return this.deque.length === 0
    }

    isFull(): boolean {
        return this.deque.length >= this.maxSize
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글