LEETCODE 1344. Angle Between Hands of a Clock 解题思路分析

题目大意:

时钟指针的夹角

给你两个数 hour 和 minutes 。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(60 单位制)。

示例 1:

输入:hour = 12, minutes = 30
输出:165

示例 2:

输入:hour = 3, minutes = 30
输出;75

示例 3:

输入:hour = 3, minutes = 15
输出:7.5

示例 4:

输入:hour = 4, minutes = 50
输出:155

示例 5:

输入:hour = 12, minutes = 0
输出:0

提示:

  • 1 <= hour <= 12
  • 0 <= minutes <= 59
  • 与标准答案误差在 10^-5 以内的结果都被视为正确结果。

如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=1344

解题思路分析:

本题是一道不折不扣的简单数学题目。我们通过常识可知表盘一共是360度,分针对应的每一分钟是6(360/60)度,当前分钟乘以6即是分针的角度。对于时针,每一个小时的度数是30(360/12)度。不过当分针不在0位时,时针也会随着分针的偏移而偏移,假设当前分针指向的是M,那么时针的偏移量则是30度乘以M除以60,再加上小时乘以30,即是时针的角度。我们计算完两个指针的角度之后,查看其角度差A,以及360-A,取其中较小的一个角度为返回值。

实现代码:

public double angleClock(int hour, int minutes) {
    // 分针角度
    double mAngle = minutes * 6d;
    // 时针角度
    double hAngle = hour * 30d;
    // 时针角度加上分针偏移量
    hAngle += 30d * minutes / 60d;
    // 角度差
    double angle=Math.abs(mAngle-hAngle);
    return Math.min(angle, 360-angle);
}

本题解法执行时间为0ms。

Runtime: 0 ms, faster than 100.00% of Java online submissions for Angle Between Hands of a Clock.

Memory Usage: 36.5 MB, less than 100.00% of Java online submissions for Angle Between Hands of a Clock.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
本文链接: https://leetcode.jp/leetcode-1344-angle-between-hands-of-a-clock-解题思路分析/
此条目发表在leetcode分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。