Cho mảng a[], in các phần tử theo lần xuất hiện cuối cùng, giữ thứ tự tương đối theo lần cuối xuất hiện.
Ví dụ: {1,3,2,3,1,2} -> lần cuối: 3 (vị trí 3), 1 (vị trí 4), 2 (vị trí 5) -> kết quả 3 1 2.
Ví dụ
Input: a[] = {4,2,2,4,1,5,1}
Output: 2 4 5 1

Thuật toán
BẮT ĐẦU
HÀM printelements(int a[], int n)
unordered_map ele
VỚI i=0 ĐẾN n-1: ele[a[i]] = i // lưu chỉ số cuối
VỚI i=0 ĐẾN n-1
NẾU ele[a[i]] == i THÌ IN a[i] // đúng là lần cuối
KẾT THÚC
Chương trình C++ ví dụ
#include <bits/stdc++.h>
using namespace std;
void printelements(int a[], int n) {
unordered_map ele;
for (int i = 0; i < n; i++) ele[a[i]] = i;
for (int i = 0; i < n; i++)
if (ele[a[i]] == i) cout << a[i] << " ";
}
int main() {
int a[] = {4,2,2,4,1,5,1};
int n = sizeof(a)/sizeof(a[0]);
printelements(a, n);
return 0;
}
Kết quả
2 4 5 1