Skip to main content

Angle Between Hands of a Clock

LeetCode 1446 | Difficulty: Medium​

Medium

Problem Description​

Given two numbers, hour and minutes, return the smaller angle (in degrees) formed between the hour and the minute hand.

Answers within 10^-5 of the actual value will be accepted as correct.

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

Constraints:

- `1 <= hour <= 12`

- `0 <= minutes <= 59`

Topics: Math


Approach​

Mathematical​

Look for mathematical patterns or formulas. Consider: modular arithmetic, GCD/LCM, prime factorization, combinatorics, or geometric properties.

When to use

Problems with clear mathematical structure, counting, number properties.


Solutions​

Solution 1: C# (Best: 47 ms)​

MetricValue
Runtime47 ms
Memory25.5 MB
Date2022-01-17
Solution
public class Solution {
public double AngleClock(int hour, int minutes) {

hour = (hour==12) ? 0 : hour;
double hourAngle = hour*30 + (minutes*0.5);
double minutesAngle = minutes * 6;
double result = Math.Abs(hourAngle-minutesAngle);
return Math.Min(result, 360.0-result);
}
}

Complexity Analysis​

ApproachTimeSpace
Solution$O(n)$$O(1) to O(n)$

Interview Tips​

Key Points
  • Discuss the brute force approach first, then optimize. Explain your thought process.
  • LeetCode provides 2 hint(s) for this problem β€” try solving without them first.
πŸ’‘ Hints

Hint 1: The tricky part is determining how the minute hand affects the position of the hour hand.

Hint 2: Calculate the angles separately then find the difference.