You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vasily Guzov 807a5ae9cf [HAI] week3 intersection array
https://www.interviewbit.com/problems/intersection-of-sorted-arrays/
1 year ago
..
index.ts [HAI] week3 intersection array 1 year ago
intersectionSortedArray.test.ts [HAI] week3 intersection array 1 year ago
intersectionSortedArray.ts [HAI] week3 intersection array 1 year ago
readme.md [HAI] week3 intersection array 1 year ago

readme.md

hai-week-3-intersection-array

описание задачи

Find the intersection of two sorted arrays OR in other words, given 2 sorted arrays, find all the elements which occur in both arrays.

NOTE: For the purpose of this problem ( as also conveyed by the sample case ), assume that elements that appear more than once in both arrays should be included multiple times in the final output.

Problem Constraints

1 <= |A| <= 106
1 <= |B| <= 106

Input Format

The first argument is an integer array A.
The second argument is an integer array B.

Output Format

Return an array of intersection of the two arrays.

Example Input

Input 1:
A: [1 2 3 3 4 5 6]
B: [3 3 5]

Input 2:
A: [1 2 3 3 4 5 6]
B: [3 5]

Example Output

Output 1: [3 3 5]

Output 2: [3 5]

Example Explanation

Explanation 1:

3, 3, 5 occurs in both the arrays A and B

Explanation 2:

Only 3 and 5 occurs in both the arrays A and B

тест кейсы

текстовое описание решения

ассимптотическая оценка

Description Estimation
time: O(n+m)
mem: O(min(n,m))

time

Description Time
анализ и сбор информации 14:20
обдумываение решения и формулировка решения 25:30
имплементация 06:10
исправление ошибок 06:12
полное время затраченое на решение 51:14

журнал ошибок

  • условие окончание цикла поставил || вместо &&
  • двигал указатели каждый и после условия равенства и после проверки большего меньшего, вы нес проверку в исключающуся ветвь else

code

typescript

export function intersectionSortedArray(a: number[], b: number[]): number[] {
  let res: number[] = [];
  let aI = 0;
  let bI = 0;

  while (aI < a.length && bI < b.length) {
    let aValue = a[aI];
    let bValue = b[bI];

    if (aValue === bValue) {
      res.push(aValue);
      aI++;
      bI++;
    } else {
      aValue < bValue ? aI++ : bI++;
    }
  }

  return res;
};