я написал следующий код для this problem.Программирование Вызов кода занимает слишком много времени
prof = sorted([int(input()) for x in range(int(input()))])
student = sorted([int(input()) for x in range(int(input()))])
prof_dates = len(prof)
stud_dates = len(student)
amount = 0
prof_index = 0
stud_index = 0
while stud_index < stud_dates and prof_index < prof_dates:
if student[stud_index] == prof[prof_index]:
amount += 1
stud_index += 1
elif student[stud_index] > prof[prof_index]:
prof_index += 1
elif student[stud_index] < prof[prof_index]:
stud_index += 1
print(amount)
Но код производит Лимит времени Exceeded Error. Раньше я пытался использовать in
для каждого предмета в студенте, но он создал TLE, и я считаю, что это потому, что оператор in
равен O(n)
. Итак, я написал этот код, требуемые шаги которого примерно равны сумме длин обоих списков. Но это также производит TLE. Итак, какие изменения я должен внести в свой код. Есть ли какая-то особенная часть, которая имеет высокие затраты времени?
Спасибо.
Почему downvote? –
Поскольку код работает, возможно, это лучше подходит для [codereview.se]. – usr2564301