| use std::collections::HashMap; | |||||
| pub fn unique_occurrences(arr: Vec<i32>) -> bool { | |||||
| let mut hm = HashMap::<i32, i32>::new(); | |||||
| for n in arr { | |||||
| let count = hm.entry(n).or_insert(0); | |||||
| *count += 1; | |||||
| } | |||||
| let mut vals: Vec<&i32> = hm.values().collect(); | |||||
| vals.sort(); | |||||
| let og_length = vals.len(); | |||||
| vals.dedup_by_key(|i| *i); | |||||
| let new_length = vals.len(); | |||||
| og_length == new_length | |||||
| } | |||||
| pub fn main() { | |||||
| println!("Expected: true"); | |||||
| println!("Got: {}", unique_occurrences(vec![1, 2, 2, 3, 3, 3])); | |||||
| } |
| Given an array of integers arr, write a function that returns true if and only if the number of occurrences of each value in the array is unique. | |||||
| Example 1: | |||||
| Input: arr = [1,2,2,1,1,3] | |||||
| Output: true | |||||
| Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number of occurrences. | |||||
| Example 2: | |||||
| Input: arr = [1,2] | |||||
| Output: false | |||||
| Example 3: | |||||
| Input: arr = [-3,0,1,-3,1,1,1,-3,10,0] | |||||
| Output: true | |||||
| Constraints: | |||||
| 1 <= arr.length <= 1000 | |||||
| -1000 <= arr[i] <= 1000 | |||||
| #!/bin/bash | |||||
| rustc main.rs | |||||
| ./main | |||||
| rm main |