问答题766/1593时钟指针的夹角

给你两个数 hourminutes 。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(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 以内的结果都被视为正确结果。
1/** 2 * @param {number} hour 3 * @param {number} minutes 4 * @return {number} 5 */ 6var angleClock = function(hour, minutes) { 7 8};
难度:
2022-03-20 创建

参考答案:

解题思路

以12点为界限来计算角度,首先计算时针到12点的角度,就等于整数点数模12(因为12应该取0)加上分钟/60在乘上360/12。比如12:30 就是(0+1/2)360/12=15度。

在计算分钟到12点的角度,就是分钟数360/60。之后求这两个角度差的绝对值就是夹角,如果夹角大于180则再求一次补角返回即可。

代码

1/** 2 * @param {number} hour 3 * @param {number} minutes 4 * @return {number} 5 */ 6var angleClock = function(hour, minutes) { 7 // 每分移动6° 8 let oneMinAngle = 6; 9 // 每小时移动30° 10 let oneHourAngle = 30; 11 // 分针移动的角度 12 let minutesAngle = oneMinAngle * minutes; 13 // 时针移动的角度 并且防止12点 所以 hour % 12 14 let hourAngle = (hour % 12 + minutes / 60.0) * oneHourAngle 15 // 用时针的角度减去分针的角度,得其绝对值 16 let diff = Math.abs(hourAngle - minutesAngle); 17 // 返回最小值 18 return Math.min(diff, 360 - diff); 19}

最近更新时间:2022-03-20

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!