Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để chuyển đổi một mảng sang dạng thu gọn của nó bằng cách sử dụng hàm băm.
Đối với điều này, chúng tôi sẽ được cung cấp một mảng. Nhiệm vụ của chúng ta là chuyển đổi mảng đã cho ở dạng rút gọn để nó chỉ chứa các phần tử từ 0 đến n-1.
Ví dụ
#include <bits/stdc++.h> using namespace std; //converting array to its reduced form void convert(int arr[], int n){ // copying the elements of array int temp[n]; memcpy(temp, arr, n*sizeof(int)); sort(temp, temp + n); //creating a hash table unordered_map<int, int> umap; int val = 0; for (int i = 0; i < n; i++) umap[temp[i]] = val++; //putting values in the hash table for (int i = 0; i < n; i++) arr[i] = umap[arr[i]]; } void print_array(int arr[], int n) { for (int i=0; i<n; i++) cout << arr[i] << " "; } int main(){ int arr[] = {10, 20, 15, 12, 11, 50}; int n = sizeof(arr)/sizeof(arr[0]); cout << "Given Array :\n"; print_array(arr, n); convert(arr , n); cout << "\nConverted Array:\n"; print_array(arr, n); return 0; }
Đầu ra
Given Array : 10 20 15 12 11 50 Converted Array: 0 4 3 2 1 5