Sponsored
Sponsored
This approach involves calculating the angles made by the hour hand and the minute hand with respect to 12:00 and then finding the smallest angle between them. The minute hand moves 6 degrees per minute (360 degrees / 60 minutes), and the hour hand moves 30 degrees per hour (360 degrees / 12 hours) plus an additional 0.5 degrees per minute. The difference between these angles gives us the desired result.
Time Complexity: O(1) - The computation involves a fixed number of arithmetic operations.
Space Complexity: O(1) - No additional space is required beyond fixed-size variables.
1class Solution:
2 def angleClock(self, hour: int, minutes: int) -> float:
3 minute_angle = minutes * 6
4 hour_angle = (hour % 12) * 30 + minutes * 0.5
5 angle = abs(minute_angle - hour_angle)
6 return min(angle, 360 - angle)
7
8sol = Solution()
9print(f"{sol.angleClock(12, 30):.5f}") # Output: 165.00000
10print(f"{sol.angleClock(3, 30):.5f}") # Output: 75.00000
11print(f"{sol.angleClock(3, 15):.5f}") # Output: 7.50000
Python solution uses the same arithmetic logic to calculate the angles and returns the minimum of the calculated angle and its complement (360 minus the angle). The formatted string ensures precision in printing the result.
This alternative approach converts the movement of the clock hands into their equivalent rotations, effectively translating this into angles. The goal is to determine the position of both hands as angles relative to the 12 o'clock position and compute the minimal angular difference.
Time Complexity: O(1) - Fixed-time operations based on input.
Space Complexity: O(1) - Uses a constant number of variables.
1
Java variant of the solution follows a reduction of the problem into completed 12-hour period cycles for the hour hand, adjusted by total minutes. Modular arithmetic aids in translating these cyclic movements into angular displacements relative to the top of the hour.