An alternate thing which can be done is, after sorting elements, instead of using Hashing, we can do a binary search of the element in sorted temp array 1. After Sorting the temp array, iterate over the original array 2. pick an element of the original array and search in a sorted array 3. return index from binary search and update the same in the original array Hashing takes O(n) space and searching becomes O(1) and in Binary search, search time is O(log(n)) and space - O(1)
On one hand your code has std:unordered_map which seems relatively modern. On the other hand you pass a C style array with the length, which seems older and error prone. Is there some reason you mix the two styles? Did you want to pass std::vector ?
An alternate thing which can be done is, after sorting elements, instead of using Hashing, we can do a binary search of the element in sorted temp array
1. After Sorting the temp array, iterate over the original array
2. pick an element of the original array and search in a sorted array
3. return index from binary search and update the same in the original array
Hashing takes O(n) space and searching becomes O(1) and in Binary search, search time is O(log(n)) and space - O(1)
Yeah it's a nice way
On one hand your code has std:unordered_map which seems relatively modern. On the other hand you pass a C style array with the length, which seems older and error prone. Is there some reason you mix the two styles? Did you want to pass std::vector ?
Why do we need a map? Cant we just sort the array and then assign them values from 0 to n-1?
void convert(int arr[], int n)
{
int t[n];
for(int i=0;i
What about the duplicates??
It is mentioned in the problem statement that the array has distinct elements. :)