Loading Now

[Cpp-STL] queue1

Cpp STL Queue

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]k = 1,
    thì transformArray(arr, k) = [2, 3, 4, 1].
  • Với arr = [1, 3, 2]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.

queue-introduce

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

Contact