题目大意:
时钟指针的夹角
给你两个数 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.
本网站文章均为原创内容,并可随意转载,但请标明本文链接如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: http://leetcode.jp/leetcode-1344-angle-between-hands-of-a-clock-解题思路分析/
《LEETCODE 1344. Angle Between Hands of a Clock 解题思路分析》有1条回应