carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode2248: Intersection of Multiple Arrays #367

Open carloscn opened 1 year ago

carloscn commented 1 year ago

Description

Given a 2D integer array nums where nums[i] is a non-empty array of distinct positive integers, return the list of integers that are present in each array of nums sorted in ascending order.

Example 1:

Input: nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]] Output: [3,4] Explanation: The only integers present in each of nums[0] = [3,1,2,4,5], nums[1] = [1,2,3,4], and nums[2] = [3,4,5,6] are 3 and 4, so we return [3,4].

Example 2:

Input: nums = [[1,2,3],[4,5,6]] Output: [] Explanation: There does not exist any integer present both in nums[0] and nums[1], so we return an empty list [].

Constraints:

1 <= nums.length <= 1000 1 <= sum(nums[i].length) <= 1000 1 <= nums[i][j] <= 1000 All the values of nums[i] are unique.

carloscn commented 1 year ago

Analysis

fn find_common_elements(a:&Vec<i32>, b:&Vec<i32>) -> Vec<i32>
{
    let mut ret:Vec<i32> = vec![];

    for e in a {
        if b.contains(&e) && !ret.contains(&e) {
            ret.push(*e);
        }
    }

    return ret;
}

pub fn intersection(nums: Vec<Vec<i32>>) -> Vec<i32>
{
    let mut ret:Vec<i32> = vec![];
    if nums.is_empty() {
        return ret;
    }

    ret = nums[0].clone();
    for i in 1..nums.len() {
        ret = find_common_elements(&ret, &nums[i]);
    }

    return ret;
}
carloscn commented 1 year ago

Code

https://review.gerrithub.io/c/carloscn/structstudy/+/1169994 https://github.com/carloscn/structstudy/commit/8fb5ea19dcb626ee76ec69cf3080fa0d4b14acce