Найти дату после следующего полугодия от заданной даты

Опубликовано: 22 Сентября, 2022

Даны положительное целое число D и строка M , представляющая день и месяц високосного года, задача состоит в том, чтобы найти дату после следующего полугодия.

Примеры:

Input: D = 15, M = “January”
Output: 16 July
Explanation: The date from the 15th of January to the next half year is 16th of July.

Input: D = 10, M = “October”
Output: 10 April

Подход: Поскольку високосный год содержит 366 дней , данную задачу можно решить, найдя данные после увеличения текущей даты на 183 дня . Следуйте инструкциям, чтобы решить проблему:

  • Сохраните количество дней в каждом месяце в этом массиве, скажем, days[] .
  • Инициализируйте переменную, скажем, curMonth как M , чтобы сохранить индекс текущего месяца.
  • Инициализируйте переменную, скажем, curDate как D , чтобы сохранить текущую дату.
  • Инициализируйте переменную, скажем, count как 183 , представляющую количество дней для увеличения.
  • Повторяйте до тех пор, пока значение count не станет положительным, и выполните следующие шаги:
    • Если значение count положительное, а curDate не превышает количество дней в curMonth, тогда уменьшите значение count на 1 и увеличьте значение curDate на 1 .
    • Если значение count равно 0 , то выйти из цикла.
    • Обновите значение curMonth на (curMonth + 1)%12 .
  • После выполнения вышеуказанных шагов выведите в качестве результата дату, соответствующую curDate и curMonth .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(1)
Вспомогательное пространство: O(1)