μ μμ μ±μ§
μ μ double-ended queue
μμͺ½ λμμ μ½μ κ³Ό μμ κ° μ λΆ κ°λ₯ν μλ£ κ΅¬μ‘°
μ±μ§
- μμμ μΆκ°μ μ κ±° : O(1)
- μ μΌ μ/λ€μ μμ νμΈ : O(1)
- μ μΌ μ/λ€μ΄ μλ λλ¨Έμ§ μμλ€μ νμΈ/λ³κ²½μ΄ μμΉμ μΌλ‘ λΆκ°λ₯
- μΈλ±μ€λ‘ μμ μ κ·Ό κ°λ₯
κΈ°λ₯κ³Ό ꡬν
const int MAX = 1e7;
int data[2*MAX + 1];
int head = MAX, tail = MAX; // μμ μ§μ μ λ°°μ΄μ μ€κ°μΌλ‘ : μλ€λ‘ νμ₯
// head : μμ. tail : λ€μμ λ€μ΄κ° μμμ μ리
void push_front(int x) data[--head] = x;
void push_back(int x) data[tail++] = x;
void pop_front() head++;
void pop_back() tail--;
int front() return data[head];
int back() return data[tail-1];
STL deque
vectorμ λ€λ₯΄κ² dequeμ κ°μ΄ μ°μμ μΌλ‘ λ°°μΉλμ΄ μμ§ μμ
dq[idx] = val;
dq.insert(dq.begin() + idx, val);
dq.erase(dq.begin() + idx);
'β¨ Algorithm > πβπ¦Ί λ°νΉλ κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[0x09] BFS (0) | 2023.06.26 |
---|---|
[0x08] μ€νμ νμ©(μμμ κ΄νΈ μ) (0) | 2023.06.26 |
[0x06] ν (0) | 2023.06.20 |
[0x05] μ€ν (0) | 2023.06.20 |
[0x04] μ°κ²°λ¦¬μ€νΈ (0) | 2023.06.20 |
λκΈ