1344. Angle Between Hands of a Clock

今天的题目是1344. Angle Between Hands of a Clock

思路大概是这样的,因为时针的位置会受到分针位置的影响,比如分针在30时,时针也会向前移动半格,因此解决了这个问题就好办了。由于分钟只能在 0 到 59 之间,所以我们可以把时针的一个格子分成 60 等分,那么12个格子就是 720 等分,然后分针也映射到 720 等分的格子中,就可以简单的通过减法和除法来计算夹角占整个圆的比例了,进而算出夹角的弧度制。

  • 时针的位置:hour * 60 + minutes
  • 分针的位置:minutes * 720 / 60 or minutes * 12

代码如下:

1
2
3
4
5
6
7
double angleClock(int hour, int minutes) {
hour = hour % 12;
minutes = minutes % 60;
hour = hour * 60 + minutes;
minutes = minutes * 12;
return min(720 - abs(hour - minutes), abs(hour - minutes)) / 2.0;
}