如果月份大于2,,需要判断当年是否是闰年,如果是闰年2月份需要多算一天。
具体计算:
- 先计算月的贡献(注意月份大于2时的闰年判断)
- 再计算日的贡献
时间复杂度:O(m)。月份数
空间复杂度:O(m)。月份数
public int dayOfYear(String date) {
String[] myDate=date.split("-");
int year=Integer.valueOf(myDate[0]);
int month=Integer.valueOf(myDate[1]);
int day=Integer.valueOf(myDate[2]);
int[] monthDay={31,28,31,30,31,30,31,31,30,31,30,31};
int res=0;
//计算满月的贡献
for(int i=0;i<month-1;i++){
res+=monthDay[i];
}
//判断是不是闰年
if(month>2&&((year%400==0)||(year%4==0&&year%100!=0))){
res++;
}
//计算最后一个月的贡献
res+=day;
return res;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~