本文主要是介绍leetcode 一年中的第几天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一年中的第几天
https://leetcode-cn.com/problems/day-of-the-year/
//判断平年还是闰年
int isLearYear(int year) {return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1 : 0;
}int dayOfYear(char * date){//存放当前月之前的天数和int before_month_days[2][12] = {{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334},{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}};//截取年月日字符串char date_str[3][5] = {0};strncpy(date_str[0], date, 4);strncpy(date_str[1], &date[5], 2); //date+5 <=> &date[5]strncpy(date_str[2], &date[8], 2); //date+8 <=> &date[8]//字符串转化为整形int year = atoi(date_str[0]), month = atoi(date_str[1]), day = atoi(date_str[2]);return before_month_days[isLearYear(year)][month-1] + day;
}
复杂度
- 算法使用空间是恒定的常数项,故而空间复杂度为O(1)。
- 算法过程为获取hash值再求和,故而时间复杂度也为O(1)。
这篇关于leetcode 一年中的第几天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!