Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,690 questions

55,442 answers

573 users

How to flatten a 2D array into a sorted one-dimensional array with unique values in Rust

1 Answer

0 votes
use std::collections::BTreeSet;

// Function that flattens a 2D vector, sorts it, removes duplicates,
// and returns a new sorted vector with unique values
fn flatten_sort_unique(vec2d: Vec<Vec<i32>>) -> Vec<i32> {

    // 1. Flatten the 2D vector into a 1D vector
    let mut flat: Vec<i32> = Vec::new();
    for row in vec2d {
        flat.extend(row);
    }

    // 2. Insert into BTreeSet to sort and remove duplicates
    let set: BTreeSet<i32> = flat.into_iter().collect();

    // 3. Convert back to Vec
    set.into_iter().collect()
}

fn main() {
    let vec2d: Vec<Vec<i32>> = vec![
        vec![4, 3, 3, 2, 4],
        vec![30, 10, 10],
        vec![10, 30],
        vec![1, 1, 6, 7, 7, 7, 8],
    ];

    let arr = flatten_sort_unique(vec2d);

    // Print results
    for n in arr {
        print!("{}\t", n);
    }
}



/*
run

1	2	3	4	6	7	8	10	30	

*/

 



answered Jun 16 by avibootz

Related questions

...