LeetCode Biweekly Contest 40 3問目 - Design Front Middle Back Queue [1670]

Source

LeetCode Biweekly Contest 40
問題文

問題概要

省略

解法

省略

cLayversion 20201206-1)のコード

C++に変換後のコードはこちら

#define main dummy_main
{}
#undef main

int ast, aed, a[3000], bst, bed, b[3000];

class FrontMiddleBackQueue {
public:
  FrontMiddleBackQueue() {
    ast = aed = bst = bed = 1500;
  }

  void doit(void){
    int i;
    while(aed - ast > bed - bst){
      i = a[--aed];
      b[--bst] = i;
    }
    while(aed - ast < bed - bst - 1){
      i = b[bst++];
      a[aed++] = i;
    }
  }

  void pushFront(int val) {
    a[--ast] = val;
  }
  void pushMiddle(int val) {
    doit();
    a[aed++] = val;
  }
  void pushBack(int val) {
    b[bed++] = val;
  }

  int popFront() {
    if(aed - ast > 0) return a[ast++];
    if(bed - bst > 0) return b[bst++];
    return -1;
  }
  int popMiddle() {
    doit();
    if(aed - ast == bed - bst == 0) return -1;
    if(aed - ast == bed - bst) return a[--aed];
    return b[bst++];
  }
  int popBack() {
    if(bed - bst > 0) return b[--bed];
    if(aed - ast > 0) return a[--aed];
    return -1;
  }
};

Current time: 2024年04月19日21時10分58秒
Last modified: 2020年12月06日03時03分22秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る

Logged in as: unknown user (not login)

ログイン: