## 1636. Sort Array by Increasing Frequency

Given an array of integers `nums`, sort the array in increasing order based on the frequency of the values. If multiple values have the same frequency, sort them in decreasing order.

Return the sorted array.

Example 1:

```Input: nums = [1,1,2,2,2,3]
Output: [3,1,1,2,2,2]
Explanation: '3' has a frequency of 1, '1' has a frequency of 2, and '2' has a frequency of 3.
```

Example 2:

```Input: nums = [2,3,1,3,2]
Output: [1,3,3,2,2]
Explanation: '2' and '3' both have a frequency of 2, so they are sorted in decreasing order.
```

Example 3:

```Input: nums = [-1,1,-6,4,5,-6,1,4,1]
Output: [5,-1,4,4,-6,-6,1,1,1]```

Constraints:

• `1 <= nums.length <= 100`
• `-100 <= nums[i] <= 100`

## Rust Solution

``````struct Solution;
use std::cmp::Reverse;
use std::collections::HashMap;

impl Solution {
fn frequency_sort(mut nums: Vec<i32>) -> Vec<i32> {
let n = nums.len();
let mut count: HashMap<i32, usize> = HashMap::new();
for i in 0..n {
*count.entry(nums[i]).or_default() += 1;
}
nums.sort_by_key(|&x| (count[&x], Reverse(x)));
nums
}
}

#[test]
fn test() {
let nums = vec![1, 1, 2, 2, 2, 3];
let res = vec![3, 1, 1, 2, 2, 2];
assert_eq!(Solution::frequency_sort(nums), res);
let nums = vec![2, 3, 1, 3, 2];
let res = vec![1, 3, 3, 2, 2];
assert_eq!(Solution::frequency_sort(nums), res);
let nums = vec![-1, 1, -6, 4, 5, -6, 1, 4, 1];
let res = vec![5, -1, 4, 4, -6, -6, 1, 1, 1];
assert_eq!(Solution::frequency_sort(nums), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.