日期问题
常见类型
日期问题是算法题中较为常见的一类题目,常见的题目类型有如下几类:
1、给出两个日期,求差值;
2、给出一个日期,问你是这年的第几天;
3、给出这天是某年的第几天,问你日期;
4、给出一个日期,问你是星期几。
解决思路
将所有日期转化为距离某个固定日期的日期差,之后再进行统一操作,思路和Unix时间戳类似。这里我们选择计算从当前日期到1年1月1日的日期差,c++的计算函数如下所示:
1 |
|
(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400部分计算前面整年的天数,mon[month-1]计算前面整月的天数,((year%100!=0&&year%40)||(year%4000&&month>2))判断今年是否需要加闰年。
OJ题目
日期差值
题目链接:https://www.nowcoder.com/questionTerminal/ccb7383c76fc48d2bbc27a2a6319631c
代码:
1 |
|
day of week
题目链接:https://www.nowcoder.com/questionTerminal/a3417270d1c0421587a60b93cdacbca0
代码:
1 |
|
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!