给你两个数 hour
和 minutes
。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(60 单位制)。
示例1:
输入:hour = 12, minutes = 30
输出:165
示例2:
输入:hour = 3, minutes = 30
输出;75
思路:分别计算时针,分针相对于0点的角度,
时针每走一格是360/12=30度,还要考虑到分针移动时针也同样移动的情况,所以最终计算为:时针%12 * 30 + 分钟/60*30
分针每走一分钟是360/60=6度。
某一时刻的时间两种情况 要么时针角度大,要么分针角度大。
最终如果在表盘右边和左边也是两种大小 我们取最小
public static double angleClock(int hour, int minutes) {
int oneMinAngle = 6;
int oneHourAngle = 30;
double minutesAngle = oneMinAngle * minutes;
double hourAngle = (hour % 12 + minutes / 60.0) * oneHourAngle;
double diff = Math.abs(hourAngle - minutesAngle);
return Math.min(diff, 360 - diff);
}