https://leetcode.com/problems/day-of-the-year/description/ Easy

Условие

Дана дата в формате строки YYYY-MM-DD. Верни порядковый номер дня в этом году.

Примеры

Input: date = "2019-01-09” Output: 9 Explanation: 9 января — 9-й день года.

Input: date = "2019-02-10” Output: 41

Решение

fun dayOfYear(date: String): Int {
		fun isLeapYear(year: Int) = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)

    val (year, month, day) = date.split("-").map(String::toInt)
    val daysInMonth = intArrayOf(31,28,31,30,31,30,31,31,30,31,30,31)
    if (isLeapYear(year)) daysInMonth[1] = 29  // учитываем високосный год

    var dayOfYear = day
    for (i in 0 until month - 1) {
        dayOfYear += daysInMonth[i]  // добавляем дни прошедших месяцев
    }

    return dayOfYear
}

Временная сложность

O(1), всегда обходим максимум 12 месяцев.

Пространственная сложность

O(1), память постоянна.