LeetCode 1118. 一月有多少天

题目描述

1118. 一月有多少天

思路分析

解法一:闰年判断(推荐)

核心思路

  • 月份为 2 时,需要根据闰年规则返回 28 或 29。
  • 闰年规则:能被 400 整除,或能被 4 整除且不能被 100 整除。
  • 其他月份直接查表返回天数。


复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。
class Solution {
    public int numberOfDays(int year, int month) {
        int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (month == 2 && isLeap(year)) {
            return 29;
        }
        return days[month];
    }

    private boolean isLeap(int year) {
        return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
    }
}
func numberOfDays(year int, month int) int {
    days := []int{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
    if month == 2 && isLeap(year) {
        return 29
    }
    return days[month]
}

func isLeap(year int) bool {
    if year%400 == 0 {
        return true
    }
    return year%4 == 0 && year%100 != 0
}

相似题目

题目 难度 考察点
1185. 一周中的第几天 简单 日期计算
1154. 一年中的第几天 简单 日期计算
1360. 日期之间隔几天 简单 日期计算
1118. 一月有多少天 简单 日期
1507. 转变日期格式 简单 日期处理
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/15850622
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!