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 |