LeetCode-1344. 时钟指针的夹角

520 阅读1分钟

1.题目描述

给你两个数 hourminutes 。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(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;
    }
}

运行结果:

image.png

4. 总结

这个题目就是找规律,把分针和时针的规律。分针动带动时针动的关系。这个是整个题目的解题关键。另外还不需要考虑两者之间算出来的夹角大于180的情况,这个需要算小于180的夹角。这个情况是需要特殊处理的。

我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢