Advertisement
Guest User

Rust Collections Exercise 1

a guest
Jun 5th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.12 KB | None | 0 0
  1. /*
  2.  * Given a list of integers, use a vector and return the median
  3.  * (when sorted, the value in the middle position) and mode (the value
  4.  * that occurs most often; a hash map will be helpful here) of the list.
  5. */
  6. use std::collections::HashMap;
  7.  
  8. fn main() {
  9.     let list = vec![1, 5, 7, 8, 12, 9, 32, 6, 9, 10, 10, 10];
  10.  
  11.     fn median(vector: &Vec<u32>) -> u32 {
  12.         let mut auxiliary_vector = vector.clone();
  13.         auxiliary_vector.sort();
  14.  
  15.         auxiliary_vector[auxiliary_vector.len() / 2]
  16.     }
  17.  
  18.     fn mode(vector: &Vec<u32>) -> u32 {
  19.         let mut map = HashMap::new();
  20.  
  21.         for number in vector {
  22.             let times = map.entry(number).or_insert(0);
  23.  
  24.             *times += 1;
  25.         }
  26.  
  27.         let mut max_times = 0;
  28.         let mut max_times_number = 0;
  29.  
  30.         for (number, times) in map {
  31.             if times > max_times {
  32.                 max_times = times;
  33.                 max_times_number = *number;
  34.             }
  35.         }
  36.  
  37.         max_times_number
  38.     }
  39.  
  40.     println!("Median of {:?} is {}", list, median(&list));
  41.     println!("Mode of {:?} is {}", list, mode(&list));
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement