leetcode.1185. 一周中的第几天

今天的题,leetcode上的。想起来之前遇到过这个问题,我的写法很简单,用的是系统提供的,怎么说呢?这是个数学问题。其实,大部分的算法,都涉及到数学问题。

  string dayOfTheWeek(int day, int month, int year) {
        vector week = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
        vector monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
        int days = 365 * (year - 1971) + (year - 1969) / 4;
        for (int i = 0; i < month - 1; ++i) {
            days += monthDays[i];
        }
        if ((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month >= 3) {
            days += 1;
        }
        days += day;
        return week[(days + 3) % 7];
    }

怎么说呢,看看,都是数学问题,并不是程序本身的问题。不仅仅是靠编程就可以解决的,但是编程又是基础,依靠它,然后加上一些其他方向的原理,问题迎刃而解。

ps:每天学点数学知识,读点相关内容,提升从一丢丢开始。

你可能感兴趣的:(leetcode.1185. 一周中的第几天)