Intuition¶
Sort with comparator.
Complexity¶
- Time complexity: $O(NlogN)$.
- Space complexity: $O(N)$.
Code¶
Go¶
import "sort"
func frequencySort(nums []int) []int {
freq := make([]int, 201)
for _, num := range nums {
freq[num+100]++
}
sort.SliceStable(nums, func(i, j int) bool {
return (freq[nums[i] + 100] < freq[nums[j] + 100]) || (freq[nums[i] + 100] == freq[nums[j] + 100] && nums[i] > nums[j])
})
return nums
}