Итак, я работаю над оценкой кода практики, и у меня возник вопрос:
Вопрос. Владелец стартапа ищет новых инвесторов, чтобы получить средства для своей компании. У каждого инвестора жесткий график, который владелец должен соблюдать. Учитывая графики дней, в которые инвесторы доступны, определите, сколько встреч владелец может запланировать. Обратите внимание, что владелец может проводить только одно собрание в день. Расписание состоит из двух целочисленных массивов: firstDay и lastDay. Каждый элемент в массиве firstDay представляет первый день, в который инвестор доступен, и каждый элемент в lastDay представляет последний день, в который инвестор доступен, включая оба.
Пример ввода:
STDIN Function
------ --------
5 firstDay[] size n = 5
1 → firstDay = [1, 2, 1, 2, 2]
2
1
2
2
5 → lastDay[] size n = 5
3 → lastDay = [3, 2, 1, 3, 3]
** Пример вывода: **
3
Мой код:
def countMeetings(firstDay, lastDay):
intervals= []
day_of_meeting = 0
meetings = 0
for i,j in zip(firstDay,lastDay):
intervals.append((i,j))
intervals = sorted(intervals)
for start,end in intervals:
if end < day_of_meeting:
continue
meetings += 1
day_of_meeting = max(day_of_meeting+1, start)
return meetings
Мне кое-кто помог получить жадный алгоритм, но он все еще не проходит 9/14 тестовых случаев. Большинство этих неудачных случаев скрыты, поэтому я не могу сказать, как далеко я нахожусь, но те, которые не скрыты, находятся на уровне 1 или менее 1 цели.
Ограничения:
1 <= n <= 10^5
1 <= firstDay[i], lastDay[i] <= 10^5 (Where 0 <= i < n)
firstDay[i] <= lastDay[i] (where 0 <= i < n)