## 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

```ts
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;
};
```
