仅以此纪录每日LeetCode所刷题目
题目描述:
示例:
思路:
今天这道题是一道常见的和日历有关的题目,唯一需要注意的就是2月的28天和29天的年份需要了解清楚。当年分可以整除四的时候,当年的二月就有29天,反之28天。除此之外,为了避免不同的月份需要前几个月的天数总和,我将他们存放在了数组里:
days = [0,0,31,59,90,120,151,181,212,243,273,304,334]
第一个0占位可以更明确的调用月份,不需要月份加一,容易出错。时间复杂度和空间复杂度也都比较好,如下代码也比较易懂。
代码:
class Solution:
def dayOfYear(self, date: str) -> int:
days = [0,0,31,59,90,120,151,181,212,243,273,304,334]
year = int(date[:4])
month = int(date[5:7])
day = int(date[8:])
if month == 1:
return day
if year % 4 != 0:
return days[month] + day
else:
if month > 2:
return days[month] + day + 1
else:
return days[month] + day