每日经典算法题(十四) 日期计数

每日经典算法题(十四) 日期计数

Good Good Study,Day Day Up!

题目

请用户输入某年、某月、某日,判断这一天是这一年的第几天?

程序分析

以 3 月 5 日为例,应该先把前两个月的加起来,然后再加上 5 天即本年的第几天。特殊情况,闰年且输入月份大于 3 时需考虑多加一天。

思路

这道题其实除了判断闰年的程序以外有很多种思路来求解,例如:

  • 思路一:可以利用 switch…case 将月份和对应天数作为条件和结果输入,最后加上日期即为总天数。
  • 思路二:可以将每月的基本天数(平年)添加到一个数组里面,根据月份循环叠加,得到的天数加上日期,若判断为闰年则再加一即可。
  • 思路三:可以定义一个 Map 用来存放月份和对应天数,根据输入直接查找该月份所对应的天数,再加上日期,若判断为闰年则再加一。

每个方法都有其优势,但是都有冗余的部分,根据个人理解思考就好。

个人认为 思路二 是代码较为简洁的方法:

  • 这里定义年份、月份、日期分别为 year、month、day,总天数定义为 totalDays,月份对应天数数组定义为 monthDay []

  • 循环累加天数时注意数组的下标是从 0 开始的,但是月份是从 1 开始计算的,所以这里需注意循环的次数

  • 判断为闰年的条件为:年份能被 4 整除但不能被 100 整除,或者能被 400 整除。若判断为 true 且月份数大于 2 则需要将 totalDays 的值加 1

  • 最后加上输入的日期数即为总天数,打印输出即可。

代码示例

public class Q14_WhichDayForOneYear {
   
    public static void main(String[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Java算法经典五十答案解析》是一本详细解答了50道经典的Java算法的书籍。该书以简洁清晰的语言,提供了对每一个问的详细分析和解答。 首先,该书为读者提供了每一道问目描述,确保读者可以清楚地了解问的要求和限制条件。接着,对于每个问,书中给出了多种解法,包括基础算法、优化算法和高级数据结构等。对于每种解法,书中都提供了简洁明了的代码示例,帮助读者理解和实现算法。 在解答过程中,书中还给出了详细的分析和解释,说明每个解法的原理和关键步骤。这样读者不仅能够理解解法的思路,还可以深入了解算法的运行机制和效率。同时,书中还包括了每个解法的时间复杂度和空间复杂度分析,帮助读者评估算法的效率和可行性。 此外,该书还涵盖了一些常见的算法技巧和应用,例如动态规划、贪心算法和分治算法等。通过对这些经典算法的解答,读者可以掌握并熟悉这些常见的算法思想和技巧,从而能够更自信和高效地解决实际问。 总之,《Java算法经典五十答案解析》是一本集理论和实践于一体的算法书籍。它不仅提供清晰明了的问描述和解答示例,还通过详细的分析和解释,帮助读者理解和掌握算法的原理和应用。无论是新手还是有经验的Java程序员,都可以从中学习到有关算法和数据结构的知识,并且在实际工作中应用这些知识解决问。 ### 回答2: Java算法经典五十是一套经典目集合,涵盖了Java算法的各个方面。下面是对其中一些目的解析。 1. 二分查找: 二分查找是一种高效的查找算法,通过不断缩小查找范围,直到找到目标元素或确定目标元素不存在。使用二分查找算法需要对数组进行排序,然后再进行查找。 2. 冒泡排序: 冒泡排序是一种简单但效率较低的排序算法,通过不断比较相邻元素的大小,将较大的元素交换到右侧,较小元素交换到左侧。重复这个过程,直到整个数组有序。 3. 快速排序: 快速排序是一种高效的排序算法,通过选择一个基准元素,将数组分为比基准元素小和比基准元素大的两部分,然后递归地对这两部分进行排序。 4. 查找字符串中出现次数最多的字符: 通过遍历字符串中的每个字符,使用一个HashMap来记录每个字符出现的次数,最后找到出现次数最多的字符。 5. 判断两个字符串是否是旋转字符串: 将原字符串重复拼接,然后判断目标字符串是否是拼接后的字符串的子字符串。 以上只是对其中几道目的解析,Java算法经典五十涵盖了更多类型的算法,包括字符串处理、数组操作、链表操作等等。通过解析和理解这些目,可以更好地掌握和应用Java算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值