Challenge 74

Grouped by Frequency

Given a list of integers, return a vector of vectors where each inner vector contains all numbers that appear the same number of times, grouped by frequency.

The groups should be ordered by decreasing frequency, and each group’s numbers should be sorted in ascending.

Write your solution below

#![allow(unused)]

fn main() {
// Rust Bytes Challenge Issue #92 Grouped by Frequency

pub fn group_by_frequency(nums: Vec<i32>) -> Vec<Vec<i32>> {
// TODO: implement logic here
unimplemented!()
}

#[cfg(test)]
mod tests {
use super::\*;

    #[test]
    fn mixed_frequencies() {
        let input = vec![4, 3, 1, 3, 2, 2, 2, 4, 4];
        let expected = vec![vec![2, 4], vec![3], vec![1]];
        assert_eq!(group_by_frequency(input), expected);
    }

    #[test]
    fn all_unique() {
        let input = vec![5, 4, 3, 2, 1];
        let expected = vec![vec![1, 2, 3, 4, 5]];
        assert_eq!(group_by_frequency(input), expected);
    }

    #[test]
    fn all_identical() {
        let input = vec![7, 7, 7, 7];
        let expected = vec![vec![7]];
        assert_eq!(group_by_frequency(input), expected);
    }

    #[test]
    fn includes_negatives() {
        let input = vec![-1, -1, 2, 2, 3];
        let expected = vec![vec![-1, 2], vec![3]];
        assert_eq!(group_by_frequency(input), expected);
    }

    #[test]
    fn empty_input() {
        let input: Vec<i32> = vec![];
        let expected: Vec<Vec<i32>> = vec![];
        assert_eq!(group_by_frequency(input), expected);
    }

}
}