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.

 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

posted @ 2020-07-21 13:41  包子模拟面试  阅读(180)  评论(0编辑  收藏  举报