Post

2766 Find The Prefix Common Array Of Two Arrays

2766 Find The Prefix Common Array Of Two Arrays

Find the Prefix Common Array of Two Arrays image

You are given two 0-indexed **integer **permutations A and B of length n.

A prefix common array of A and B is an array C such that C[i] is equal to the count of numbers that are present at or before the index i in both A and B.

Return the prefix common array of *A and *B.

A sequence of n integers is called a permutation if it contains all integers from 1 to n exactly once.

 

Example 1:

1
2
3
4
5
6
7
8
**Input:** A = [1,3,2,4], B = [3,1,2,4]
**Output:** [0,2,3,4]
**Explanation:** At i = 0: no number is common, so C[0] = 0.
At i = 1: 1 and 3 are common in A and B, so C[1] = 2.
At i = 2: 1, 2, and 3 are common in A and B, so C[2] = 3.
At i = 3: 1, 2, 3, and 4 are common in A and B, so C[3] = 4.

Example 2:

1
2
3
4
5
6
7
**Input:** A = [2,3,1], B = [3,1,2]
**Output:** [0,1,3]
**Explanation:** At i = 0: no number is common, so C[0] = 0.
At i = 1: only 3 is common in A and B, so C[1] = 1.
At i = 2: 1, 2, and 3 are common in A and B, so C[2] = 3.

 

Constraints:

1
2
3
1 <= A.length == B.length == n <= 50
1 <= A[i], B[i] <= n
It is guaranteed that A and B are both a permutation of n integers.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

use std::collections::HashMap;
impl Solution {
    pub fn find_the_prefix_common_array(a: Vec<i32>, b: Vec<i32>) -> Vec<i32> {
        
        let mut mp = HashMap::new();
        let mut res = Vec::new();

        let mut i = 0;
        let mut j = 0;
        let mut temp = 0;
        while(i < a.len() && i < b.len()) {
            *mp.entry(a[i]).or_insert(0) += 1;
            *mp.entry(b[i]).or_insert(0) += 1;
            //print!("{:?}", mp);
            if mp[&a[i]] % 2 == 0 {
                temp += 1;
            }
            if a[i] != b[i] && mp[&b[i]] % 2 == 0 {
                temp += 1;
            }
            res.push(temp);
            i += 1;
        }
        return res;



    }
}



This post is licensed under CC BY 4.0 by the author.