leetcode-1185:一周中的第几天

简介: leetcode-1185:一周中的第几天

题目

题目链接

给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。

输入为三个整数:day、month 和 year,分别表示日、月、年。

您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}。

示例 1:

输入:day = 31, month = 8, year = 2019
输出:"Saturday"

示例 2:

输入:day = 18, month = 7, year = 1999
输出:"Sunday"

示例 3:

输入:day = 15, month = 8, year = 1993
输出:"Sunday"

解题

方法一:模拟

参考链接

只要计算距离1970年12月31日距离当日有几天,然后根据1970年12月31日是星期四就可以推算出当天是星期几。

class Solution {
public:
    string dayOfTheWeek(int day, int month, int year) {
        vector<string> week={"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday"};
        vector<int> monthDays={31,28,31,30,31,30,31,31,30,31,30};
        int days=0;
        //计算1970年12月31日至year-1年的12月31日  有多少天
        for(int i=1971;i<year;i++){
            if(i%400==0||(i%4==0&&i%100!=0)) days+=366;
            else days+=365;
        }
        //计算1月到month-1月有几天
        for(int i=0;i<month-1;i++){
            days+=monthDays[i];
        }
        //如果闰年且大于2月,就多一天。
        if(((year)%400==0||(year%4==0&&year%100!=0))&&month>=3) days++;
        //加上当月的日子。
        days+=day;
        return week[(days+3)%7];
    }
};
相关文章
|
8月前
leetcode-1154:一年中的第几天
leetcode-1154:一年中的第几天
40 0
|
5月前
|
数据安全/隐私保护
[LitCTF 2024]ezrc4——入土为安的第一天
[LitCTF 2024]ezrc4——入土为安的第一天
56 0
|
5月前
[LitCTF 2024]hello_upx——入土为安的第一天
[LitCTF 2024]hello_upx——入土为安的第一天
54 0
|
8月前
moment常用操作(日期加减、获取月初月末、季度、年)
moment常用操作(日期加减、获取月初月末、季度、年)
2444 0
LeetCode Day01:一年中的第几天
LeetCode Day01:一年中的第几天
131 0
1185. 一周中的第几天 : 简单日期统计模拟题
1185. 一周中的第几天 : 简单日期统计模拟题
1154 一年中的第几天 leetcode
1154 一年中的第几天 leetcode
103 0
第一天
视觉生成技术定义与分类;理解视觉生成;视觉编辑、增强、制造;以及视觉开放平台。
第一天
|
弹性计算 Linux 网络安全
打卡第一天
怎么搭建FTP服务器(Win10系统)自己动手很重要!!!
597 0
打卡第一天
|
Java API
【蓝桥杯】_01世纪末星期
【每日一题】 蓝桥杯的题目很好,把这些算法掌握好,为将来的软件开发打下坚实的基础。 报考比赛的学员均来源于清华北大等以内的一千二百余高等学校,总计数十万学子积极主动报名赛事,因而百度、IBM等大厂竞相参加,为优质的你提供工资待遇丰富的岗位。

热门文章

最新文章