1185. 一周中的第几天

文章介绍了如何使用算法判断给定日期是一周中的哪一天,包括调用API、模拟、基姆拉尔森公式(涉及闰年计算和数学推导)以及蔡勒公式。作者通过总结学习了一个计算日期星期的具体方法。
摘要由CSDN通过智能技术生成

题目描述

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

输入为三个整数:daymonthyear,分别表示日、月、年。

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

做题情况

  1. 做出来且思路与标答一致
  2. 做出来但思路较为复杂 ☑
  3. 有思路,但时间复杂度较高无法通过
  4. 没有思路

自己的想法:

自己的想法其实很简单,就是根据今天的时间去倒推。但显而易见的是,这样很麻烦,而且很容易出错,正巧答案有蛮多种方法的,我一看,哦原来都没怎么学过,因此就尝试一下好了,权当一种对于这些方法的记录。

标答:

方法一:调用API

这里就不展开说了,每种算法都有属于自己的API,直接调用就可以了。

方法二:模拟

这个也不展开说了,之前估计做过超级多次了,烦都烦死了。

方法三:基姆拉尔森公式

提供年月日,可以得到当天是星期几。
w = (d + 2m + 3(m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7

其实用到的知识很简单,可以概括为同余。这个公式的推导由几部分组成。

1、求每年第一天的星期。
由于这个只看一年有多少天,因此我们只需要关注那一年是闰年就可以了。
2、求一年某一天的星期。
求这个值时需要借助本年第一天的星期。由于2月非闰年是28天,为7的倍数,因此我们只需要考虑每个月超出28的那些天数就可以了。
3、考虑完这两个因素之后,我们需要进行一些数学推导。因为1得到的是具体的y/4-y/100+y/400,但2得到的是一个数组(因为每个月的天数不具有一定规律),因此我们还需要进行一定的数学推理,得到结果。

方法四:蔡勒公式

emmm,就不展开了。这个公式和基姆拉尔森公式相比,还有一定的适用范围限制。

实际代码

无,模拟的代码太繁琐,哥们就不写了。

总结

唔没有什么总结吧,写着一篇是为了总结一下知道某一天日期,求当天的星期,还蛮神奇的。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值