@@ -0,0 +1,20 @@ | |||
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])); | |||
} |
@@ -0,0 +1,27 @@ | |||
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 | |||
@@ -0,0 +1,5 @@ | |||
#!/bin/bash | |||
rustc main.rs | |||
./main | |||
rm main |