1. 程式人生 > 實用技巧 >Baozi Training Leetcode solution 1344. Angle Between Hands of a Clock

Baozi Training Leetcode solution 1344. Angle Between Hands of a Clock

Problem Statement

Given two numbers,hourandminutes. Return the smaller angle (in degrees) formed between thehourand theminutehand.

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 within10^-5of the actual value will be accepted as correct.

Problem link

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

References