CSHARPPROGLIB Telegram 6398
✏️ Задача с собеса: кинотеатр и лучшие места

В кинотеатр пришли люди, и часть мест уже занята.
Места описаны массивом из нулей и единиц:

1 — место занято
0 — место свободно

Нужно найти такое место, чтобы сидящий оказался как можно дальше от ближайшего соседа.

Разбор решения

Нужно рассмотреть три типа промежутков свободных мест:

• Начало ряда — расстояние до ближайшего соседа = количество нулей
• Конец ряда — расстояние = количество нулей
• Середина — расстояние = количество нулей / 2. Целочисленное деление.

Алгоритм

1. Проходим по массиву один раз
2. Отслеживаем индекс последнего человека, которого мы встретили
3. При встрече человека вычисляем расстояние:

• Если это первый человек → берём его индекс (левый край)
• Если не первый → вычисляем (текущий_индекс - прошлый_индекс) / 2

3. После цикла проверяем правый край: n - 1 - последний_индекс
4. Возвращаем максимум из всех расстояний.

Код:
public class Solution {
public int MaxDistToClosest(int[] seats) {
int n = seats.Length;
int maxDist = 0;
int lastPerson = -1;

for (int i = 0; i < n; i++) {
if (seats[i] == 1) {
if (lastPerson == -1) {
// Левый край
maxDist = i;
} else {
// Середина
maxDist = Math.Max(maxDist, (i - lastPerson) / 2);
}
lastPerson = i;
}
}

// Правый край
maxDist = Math.Max(maxDist, n - 1 - lastPerson);

return maxDist;
}
}


Задача решается одним проходом за линейное время. Главное — правильно обработать три случая: левый край, середину и правый край.

➡️ Попробовать решить

Чтобы щёлкать такие задачи нужно знать алгоритмы. Подтянуть такую базу поможет наш курс по алгоритмам. До конца октября скидка 40%

🐸 Библиотека шарписта

#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7



tgoop.com/csharpproglib/6398
Create:
Last Update:

✏️ Задача с собеса: кинотеатр и лучшие места

В кинотеатр пришли люди, и часть мест уже занята.
Места описаны массивом из нулей и единиц:

1 — место занято
0 — место свободно

Нужно найти такое место, чтобы сидящий оказался как можно дальше от ближайшего соседа.

Разбор решения

Нужно рассмотреть три типа промежутков свободных мест:

• Начало ряда — расстояние до ближайшего соседа = количество нулей
• Конец ряда — расстояние = количество нулей
• Середина — расстояние = количество нулей / 2. Целочисленное деление.

Алгоритм

1. Проходим по массиву один раз
2. Отслеживаем индекс последнего человека, которого мы встретили
3. При встрече человека вычисляем расстояние:

• Если это первый человек → берём его индекс (левый край)
• Если не первый → вычисляем (текущий_индекс - прошлый_индекс) / 2

3. После цикла проверяем правый край: n - 1 - последний_индекс
4. Возвращаем максимум из всех расстояний.

Код:

public class Solution {
public int MaxDistToClosest(int[] seats) {
int n = seats.Length;
int maxDist = 0;
int lastPerson = -1;

for (int i = 0; i < n; i++) {
if (seats[i] == 1) {
if (lastPerson == -1) {
// Левый край
maxDist = i;
} else {
// Середина
maxDist = Math.Max(maxDist, (i - lastPerson) / 2);
}
lastPerson = i;
}
}

// Правый край
maxDist = Math.Max(maxDist, n - 1 - lastPerson);

return maxDist;
}
}


Задача решается одним проходом за линейное время. Главное — правильно обработать три случая: левый край, середину и правый край.

➡️ Попробовать решить

Чтобы щёлкать такие задачи нужно знать алгоритмы. Подтянуть такую базу поможет наш курс по алгоритмам. До конца октября скидка 40%

🐸 Библиотека шарписта

#dotnet_challenge

BY Библиотека шарписта | C#, F#, .NET, ASP.NET


Share with your friend now:
tgoop.com/csharpproglib/6398

View MORE
Open in Telegram


Telegram News

Date: |

Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. Users are more open to new information on workdays rather than weekends. Telegram users themselves will be able to flag and report potentially false content. Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October. The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture.
from us


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM American