Baozi Training Leetcode solution 1344. Angle Between Hands of a Clock
Problem Statement
Given two numbers, hour
and minutes
. Return the smaller angle (in degrees) 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.
Video Tutorial
You can find the detailed video tutorial here
Thought Process
Purely a math problem. Calculate the clock's hour hand and minute hand separately.
- There are 60 minutes in 360 angle, so each minute is 6 degree in angle.
- Angle should be the absolute value of (minute angel - hour angle)
- Final angle should be min(angle, 360 - angle)
Solutions
1 public double angleClock(int hour, int minutes) { 2 if (hour == 12) { 3 hour = 0; 4 } 5 double angle = Math.abs(minutes * 6 - (hour + (double)minutes / 60) * 30); 6 7 if (angle > 180) { 8 angle = 360 - angle; 9 } 10 return angle; 11 }
Time Complexity: O(1) since it's a math problem
Space Complexity: O(1) no extra space is used
Space Complexity: O(1) no extra space is used