Vasily Guzov 1 year ago
parent 656b5c6eb5
commit 807a5ae9cf

@ -0,0 +1,3 @@
import { intersectionSortedArray } from "./intersectionSortedArray";
export default intersectionSortedArray;

@ -0,0 +1,13 @@
import { describe, it, expect } from "vitest";
import { intersectionSortedArray } from "./intersectionSortedArray.ts";
describe("intersectionSortedArray", () => {
it("[1,2,3,3,4,5,6] [3,3,5] => [3,3,5]", () => {
expect(intersectionSortedArray([1, 2, 3, 3, 4, 5, 6], [3, 3, 5])).toEqual([3, 3, 5]);
});
it("[1,2,3,4,5,6] [3,5] => [3,5]", () => {
expect(intersectionSortedArray([1, 2, 3, 4, 5, 6], [3, 5])).toEqual([3, 5]);
});
});

@ -0,0 +1,20 @@
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;
};

@ -0,0 +1,110 @@
## 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;
};
```
Loading…
Cancel
Save