Проблема с расписанием встреч (посчитайте, сколько встреч владелец может запланировать в зависимости от доступности инвестора) - PullRequest
0 голосов
/ 08 мая 2020

Я попытался решить задачу, которая звучит так: «Учитывая графики дней, в которые инвесторы доступны, определите, сколько встреч владелец может запланировать». Владелец ищет новых инвесторов, чтобы получить средства для своей компании. Владелец должен соблюдать график инвестора. Обратите внимание, что у владельца может быть только одна встреча в день.

Расписание состоит из 2 целочисленных массивов: firstDay и lastDay . Каждый элемент в массиве firstDay представляет первый день, когда инвестор доступен, а каждый элемент в lastDay представляет последний день, когда инвестор доступен, оба включительно.

Пример:

firstDay = [1,2,3,3,3]

lastDay = [2, 2,3,4,4]

Всего 5 инвесторов [i0, i1, i2, i3, i4]

  • Инвестор i0 доступен с 1 по 2 день включительно [1,2]
  • Инвестор i1 доступен только в день 2 [2,2]
  • Инвестор i2 доступен только в день 3 [3,3]
  • Инвесторы i3 и i4 доступны только с 3 по 4 день [3,4]

Владелец может встретиться только с 4 инвесторами из 5: i0 в день 1, i1 в день 2, i2 в день 3 и i3 в день 4. На изображении ниже показаны запланированные собрания зеленым цветом, а заблокированные дни - серым.

График c показывает запланированные собрания

A graphic shows the scheduled meetings

Задача - реализовать t функция, которая принимает 2 списка целых чисел в качестве входных параметров и возвращает целочисленный результат, представляющий максимальное возможное количество встреч.

Ограничения

  • длина массива - больше или равно 1 и меньше или равно 100000
  • firstDay [i], lastDay [i] больше или равно 1 и меньше или равно 100000 (i больше или равно 0 меньше n)
  • firstDay [i] меньше или равно lastDay [i]

Моя реализация этой задачи следующая:

public static int countMeetings(List<int> firstDay, List<int> lastDay)
{
     var count = 0;   
     count = firstDay.Concat(lastDay).Distinct().Count();
     if (count > firstDay.Count)
     {
        count = firstDay.Count;
     }
     return count;
}

И этот код успешно проходит 8 из 12 предоставленных тестов. Проблема в том, что я не знаю входных тестовых данных, при которых тест не проходит. Поэтому, если вы дадите мне пример тестовых данных, при которых моя функция вернет неверный результат или предоставит мне правильное решение, это действительно поможет мне. Спасибо за совет.

1 Ответ

1 голос
/ 12 мая 2020

Для ввода firstDay = [1,1,1] lastDay = [5,5,5]

ваш код возвращает 2, однако правильный ответ - 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...