Leetcode 1636 Sort Array by Increasing Frequency  Summary and Q&A
TL;DR
An algorithm to sort an array based on the frequency of its elements.
Key Insights
 ⚾ Sorting based on frequency requires careful consideration of element priorities, particularly when frequencies match.
 👣 Utilizing an unordered map efficiently tracks the count of each element with average O(1) time complexity for insertions and updates.
 🎚️ The custom comparator is a powerful tool to establish multilevel sorting criteria in C++.
 🧑💻 Understanding the time complexity of sorting operations (O(n log n)) is crucial for evaluating performance, especially with larger datasets.
 🍁 The algorithm effectively demonstrates the application of basic data structures (maps, vectors) in problemsolving.
 🤔 It is essential to think in terms of both space (extra storage for maps and vectors) and time complexity when designing the solution.
 👂 The final output must be built by iterating through the sorted list, which is crucial to ensure elements are repeated according to their frequencies.
Transcript
hey there welcome back to lead coding this is the problem number one of lead code by weekly contest 38 the solutions to other three problems have already been uploaded the name of the problem is sort array by increasing frequency so we are given an array of numbers and each number will have certain frequency in that array so let's say we pick up tw... Read More
Questions & Answers
Q: What is the main challenge of the problem presented?
The main challenge is to sort the elements of an array not just by their values but primarily by their frequencies. When two elements have the same frequency, the one with the greater value should appear first in the sorted result. This requires a combination of counting, sorting, and comparisons.
Q: How do we count the frequency of the elements in the array?
The frequency of the elements can be counted using an unordered map where the keys are the array elements and the values are their corresponding counts. As we iterate through the original array, we increment the count for each element: for each element 'a', we execute 'm[a]++' to record its frequency.
Q: What sorting mechanism is employed in the solution?
The solution employs a sorting mechanism using the C++ sort function, with a custom comparator. The comparator first sorts based on frequency (ascending) and, if frequencies are the same, sorts by the element values (descending). This ensures the array is organized according to the specified rules.
Q: What data structures are used to implement the solution?
The solution uses an unordered map to keep track of the frequency of elements and a vector of vectors to store both the frequency and the corresponding values for sorting. Finally, it constructs a result vector to hold the sorted elements before returning it.
Summary & Key Takeaways

The problem involves sorting an array where elements are arranged by their frequency; lower frequency elements come first, and in cases of ties, higher value elements take precedence.

The solution utilizes an unordered map to count the frequency of each element, storing the results in a vector for sorting purposes.

A custom comparator is created to sort the vector based on frequency and values, followed by constructing the final answer array which is returned at the end.