
[Cpp-STL] queue1
Bài tập.
Cho một dãy số nguyên và số nguyên dương k
.
Một phép biến đổi sẽ dịch chuyển phần tử đầu tiên ra sau phần tử cuối cùng, hãy trả về dãy sau khi đã biến đổi k
lần.
Ví dụ:
- Với
arr = [1, 2, 3, 4]
vàk = 1
,
thìtransformArray(arr, k) = [2, 3, 4, 1]
. - Với
arr = [1, 3, 2]
vàk = 2,
thìtransformArray(arr, k) = [2, 3, 1]
.
Giới thiệu về queue:
Queue(hàng đợi) là một loại container, được thiết kế để hoạt động theo kiểu FIFO (First- in first – out) (vào trước ra trước), tức là một kiểu danh sách mà việc bổ sung được thực hiển ở cuối danh sách và loại bỏ ở đầu danh sách.
Trong queue, có hai vị trí quan trọng là vị trí đầu danh sách (front), nơi phần tử được lấy ra, và vị trí cuối danh sách (back), nơi phần tử cuối cùng được thêm vào.
Khai báo:
#include<queue>
Các phương thức:
Capacity: | |
size() | Trả về số lượng phần tử của queue |
empty() | Trả về true(1) nếu queue rỗng, ngược lại là false (0) |
Element access: | |
font() | Truy xuất phần tử ở đầu queue (phần tử đầu tiên được thêm vào) |
back() | Truy xuất phần tử ở cuối queue (phần tử cuối cùng được thêm vào) |
Modifier: | |
push (const x) | Thêm phần tử có giá trị x vào cuối queue. Kích thước queue tăng thêm 1. |
pop () | Loại bỏ phần tử ở đầu queue. Kích thước queue giảm đi 1. |
Hướng dẫn.
Code mẫu:
std::vector<int> transformArray(std::vector<int> arr, int k)
{
vector<int> v;
queue<int> q;
for (int i = 0; i < arr.size(); i++){
q.push(arr[i]);
}
for (int i = 0; i < k; i++){
int x = q.front();
q.pop();
q.push(x);
}
while (!q.empty()){
v.push_back(q.front());
q.pop();
}
return v;
}
Post Comment