How to create a common sorted unique vector from 3 integer vectors in Rust

1 Answer

0 votes
use std::collections::HashSet;

/*
   Function: merge_vectors
   Purpose:  Combine three integer vectors into a single vector.
*/
fn merge_vectors(vec_a: &[i32], vec_b: &[i32], vec_c: &[i32]) -> Vec<i32> {
    let mut vec_merged: Vec<i32> = Vec::new();
    vec_merged.extend_from_slice(vec_a);
    vec_merged.extend_from_slice(vec_b);
    vec_merged.extend_from_slice(vec_c);
    
    vec_merged
}

/*
   Function: unique_sorted
   Purpose:  Convert a vector into a sorted vector with unique elements.
             Uses HashSet to remove duplicates, then sorts the result.
*/
fn unique_sorted(vec: Vec<i32>) -> Vec<i32> {
    let set_unique: HashSet<i32> = vec.into_iter().collect();
    let mut vec_unique: Vec<i32> = set_unique.into_iter().collect();
    
    vec_unique.sort();
    vec_unique
}

fn main() {
    // Input vectors
    let vec1 = vec![5, 1, 14, 3, 8, 9, 1, 1, 7];
    let vec2 = vec![3, 5, 7, 2, 3];
    let vec3 = vec![2, 9, 8];

    // Step 1: Merge all vectors
    let vec_merged = merge_vectors(&vec1, &vec2, &vec3);

    // Step 2: Create sorted unique vector
    let vec_result = unique_sorted(vec_merged);

    // Step 3: Print result
    print!("Sorted unique vector: ");
    for x in vec_result {
        print!("{} ", x);
    }
}



/*
run:

Sorted unique vector: 1 2 3 5 7 8 9 14 

*/

 



answered 6 days ago by avibootz

Related questions

...