Given two numbers, hour
and minutes
. Return the smaller angle (in sexagesimal units) formed between the hour
and the minute
hand.
Example 1:
Input: hour = 12, minutes = 30 Output: 165
Example 2:
Input: hour = 3, minutes = 30 Output: 75
Example 3:
Input: hour = 3, minutes = 15 Output: 7.5
Example 4:
Input: hour = 4, minutes = 50 Output: 155
Example 5:
Input: hour = 12, minutes = 0 Output: 0
Constraints:
1 <= hour <= 12
0 <= minutes <= 59
- Answers within
10^-5
of the actual value will be accepted as correct.
Solution: Math
- Compute the angle of the hour hand (h + m / 60.0) * 360 / 12 as a_h
- Compute the angle of the minute hand m / 60.0 * 360 as a_m
- ans = min(abs(a_h – a_m), 360 – abs(a_h – a_m))
Time complexity: O(1)
Space complexity: O(1)
C++
1 2 3 4 5 6 7 8 9 |
// Author: Huahua class Solution { public: double angleClock(int hour, int minutes) { double a_m = minutes * 360 / 60; double a_h = (hour + minutes / 60.0) * 360 / 12; return min(abs(a_m - a_h), 360 - abs(a_m - a_h)); } }; |