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.

95 lines
2.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# maxArea
## описание задачи
You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]).
Find two lines that together with the x-axis form a container, such that the container contains the most water.
Return the maximum amount of water a container can store.
Notice that you may not slant the container.
Example 1:
Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.
Example 2:
Input: height = [1,1]
Output: 1
Constraints:
n == height.length
2 <= n <= 105
0 <= height[i] <= 104
## тест кейсы
```ts
describe("maxArea", () => {
it("[1,8,6,2,5,4,8,3,7] => 49", () => {
expect(maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7])).toBe(49);
});
it("[1,1] => 1", () => {
expect(maxArea([1, 1])).toBe(1);
});
});
```
## текстовое описание решения
- заводим два указателя в начале и в конце
- в цикле я буду двигаться к центру и считать площадь воды которая будет состоять из высоты столбцов и расстояния между ними
- сравнивая высоты крайних столбцов буду решать какой указатель двигать левый или правый
- разность между левым и правим указателем ширина площади воды минимальная высота высота площади
## ассимптотическая оценка
| Description | Estimation |
| ----------- | ---------- |
| time: | O(n) |
| mem: | O(1) |
## time
| Description | Time |
| ------------------------------------------- | ----- |
| анализ и сбор информации | 05:00 |
| обдумываение решения и формулировка решения | 15:12 |
| имплементация | 05:34 |
| исправление ошибок | 00:00 |
| полное время затраченое на решение | 25:46 |
## журнал ошибок
## code
### typescript
```ts
export function maxArea(height: number[]): number {
let L = 0;
let R = height.length - 1;
let res = 0;
while (L <= R) {
let hL = height[L];
let hR = height[R];
let currArea = Math.min(hL, hR) * (R - L);
if (currArea > res) res = currArea;
hR > hL ? L++ : R--;
}
return res;
};
```