classSolution:defangleClock(self, hour:int, minutes:int)->float:
m = minutes /60*360
h = hour /12*360+ minutes /60*30
result =abs(h - m)if result >180:return360- result
return result
# 执行用时 :44 ms, 在所有 Python3 提交中击败了20.00%的用户# 内存消耗 :13.6 MB, 在所有 Python3 提交中击败了100.00%的用户
算法说明: 以 12 点为基准,一分钟的角度大小为
60
360
\frac{{60}}{{360}}
36060,所以分针转过的角度为
m
=
minutes
×
60
360
m = {\text{minutes}} \times \frac{{60}}{{360}}
m=minutes×36060,一小时的角度大小为
12
360
\frac{{12}}{{360}}
36012,所以时针转过的大角度为
m
=
hour
×
12
360
m = {\text{hour}} \times \frac{{12}}{{360}}
m=hour×36012,但是,分针的转动会给时针带来误差,有个小角度,计算方法为:60分钟,时针累积转过
3
0
∘
{30^ \circ }
30∘,所以分针引起的时针误差为
minutes
×
30
60
{\text{minutes}} \times \frac{{30}}{{60}}
minutes×6030,所以时针转过的角度为
h
=
hour
×
12
360
+
minutes
×
30
60
h = {\text{hour}} \times \frac{{12}}{{360}} + {\text{minutes}} \times \frac{{30}}{{60}}
h=hour×36012+minutes×6030,求出两者之间的绝对差
r
e
s
u
l
t
result
result,如果大于
18
0
∘
{180^ \circ }
180∘,说明是钝角,用
36
0
∘
−
r
e
s
u
l
t
360^ \circ\; - \;result
360∘−result 转换为锐角,否则直接返回
r
e
s
u
l
t
result
result。