1.题目描述
给你两个数 hour 和 minutes 。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(60 单位制)。
示例 1:
输入:hour = 12, minutes = 30
输出:165
示例 2:
输入:hour = 3, minutes = 30
输出;75
示例 3:
输入:hour = 3, minutes = 15
输出:7.5
示例 4:
输入:hour = 4, minutes = 50
输出:155
示例 5:
输入:hour = 12, minutes = 0
输出:0
Tips: 力扣地址:leetcode-cn.com/problems/an…
2. 思路分析
前置知识:走一分钟分针走过6度,时针走过0.5度,走一小时时针走过30度。走一圈就是360度。我们以时针分针都指向12点作为参照。用分针相对12点的角度减去时针相对12点的角度的绝对值小于180度就是所求。如果大于180度就用360度减去就可以了
3. AC代码
class Solution {
public double angleClock(int hour, int minutes) {
//一分钟6度 --分针
//时 60分钟 30度 一分钟0.5度
int a = minutes * 60 - ((hour%12)*300 + minutes * 5);
int abs = Math.abs(a);
if(abs > 1800){
abs = 3600 - abs;
}
return ((double) abs)/10;
}
}
运行结果:
4. 总结
这个题目就是找规律,把分针和时针的规律。分针动带动时针动的关系。这个是整个题目的解题关键。另外还不需要考虑两者之间算出来的夹角大于180的情况,这个需要算小于180的夹角。这个情况是需要特殊处理的。
我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢