Разность времен
Вы решили задачу. Теперь можно сравнить подходы.
Переводим оба момента времени в секунды от начала суток и вычитаем.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Общая единица измерения
В часе 3600 секунд, в минуте 60. После перевода переносы между разрядами не требуют отдельных проверок.
h1 = int(input())
m1 = int(input())
s1 = int(input())
h2 = int(input())
m2 = int(input())
s2 = int(input())
start = h1 * 3600 + m1 * 60 + s1
end = h2 * 3600 + m2 * 60 + s2
print(end - start)
Время: O(1) арифметических операций. Память: O(1) числовых переменных.
Другой способ: Вычитание с заимствованием
Если секунд второго момента недостаточно для вычитания, заимствуем минуту; при отрицательном числе минут заимствуем час. Затем переводим полученный интервал в секунды.
h1 = int(input())
m1 = int(input())
s1 = int(input())
h2 = int(input())
m2 = int(input())
s2 = int(input())
seconds = s2 - s1
minutes = m2 - m1
hours = h2 - h1
if seconds < 0:
seconds += 60
minutes -= 1
if minutes < 0:
minutes += 60
hours -= 1
print(hours * 3600 + minutes * 60 + seconds)
Время: O(1) арифметических операций. Память: O(1) числовых переменных.
На что обратить внимание
- Не нужно брать модуль разности: второй момент по условию не раньше первого.
- Оба момента принадлежат одним суткам.
- Один час содержит 3600 секунд, а не 60.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.