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
Solution 1: Mathematics
The hour hand moves 30 degrees every hour and an additional 0.5 degrees for each minute. The minute hand moves 6 degrees every minute. If the angle between the hands is greater than 180 degrees, take its difference from 360 degrees to ensure the smallest angle is obtained.
The time complexity is
class Solution:
def angleClock(self, hour: int, minutes: int) -> float:
h = 30 * hour + 0.5 * minutes
m = 6 * minutes
diff = abs(h - m)
return min(diff, 360 - diff)
class Solution {
public double angleClock(int hour, int minutes) {
double h = 30 * hour + 0.5 * minutes;
double m = 6 * minutes;
double diff = Math.abs(h - m);
return Math.min(diff, 360 - diff);
}
}
class Solution {
public:
double angleClock(int hour, int minutes) {
double h = 30 * hour + 0.5 * minutes;
double m = 6 * minutes;
double diff = abs(h - m);
return min(diff, 360 - diff);
}
};
func angleClock(hour int, minutes int) float64 {
h := 30*float64(hour) + 0.5*float64(minutes)
m := 6 * float64(minutes)
diff := math.Abs(h - m)
return math.Min(diff, 360-diff)
}
function angleClock(hour: number, minutes: number): number {
const h = 30 * hour + 0.5 * minutes;
const m = 6 * minutes;
const diff = Math.abs(h - m);
return Math.min(diff, 360 - diff);
}