์ ์์ ์ฑ์ง
์ ์ 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 |
๋๊ธ