Leetcode每日一题 —— 1344. 时钟指针的夹角

魔法师 2026-06-18 08:54 1



思路


今天的题应该是简单数学问题,分别求出分针与时针的角度,两者大减小即是两者的角度,再用360刚才得到的角度求出较小角即可。


代码


class Solution {
public double angleClock(int hour, int minutes) {
double minuteAngle = minutes * 6;
double hourAngle = (hour % 12) * 30 + minutes * 0.5;
double angle = Math.abs(hourAngle - minuteAngle);
return Math.min(angle, 360 - angle);
}
}
最新回复 (7)
  • Infinity4B 06-18 09:34
    1

    经典假装中等题


    class Solution:
    def angleClock(self, hour: int, minutes: int) -> float:
    angle1=(hour+minutes/60)*30 %360
    angle2=minutes*6
    diff=abs(angle1-angle2)
    return diff if diff<=180 else 360-diff
  • SomeBottle 06-18 09:47
    2

    找到两个时钟指针分别对应的刻度,算弧长,然后转换为角度。需要注意的是时针分针横跨 12 的情况。


    class Solution {
    public:
    double angleClock(int hour, int minutes) {
    // 圆周长为 C
    // 通过 hour 和 minutes 的指向可以找到对应的弧长 s
    // (s/C) * 360° 就是对应的角度

    // 先找到两个指针对应的刻度(为了方便,按小时刻度)
    double hourPointer=(double)hour+1.0*((double)minutes / 60.0);
    double minuPointer=((double)minutes/60.0)*12.0;
    // 计算弧长
    double s1=hourPointer-minuPointer+12.0;
    double s2=minuPointer-hourPointer+12.0;
    if(s1>=12.0){
    s1-=12.0;
    }
    if(s2>=12.0){
    s2-=12.0;
    }
    return (min(s1,s2)/12.0)*360.0;
    }
    };
  • douxiaohu 06-18 09:48
    3

    大佬,只会CRUD该怎么入门算法啊 leetcode第一题都不会解。。

  • Lvvvv 06-18 10:38
    4

    简单题


    class Solution {
    public:
    double angleClock(int hour, int minutes) {
    int d_minutes = minutes * 12;
    int d_hour = hour * 60 + minutes;
    double angle_minutes = 360.0 * d_minutes / 720.0;
    double angle_hour = 360.0 * d_hour / 720.0;
    double angle = abs(angle_hour - angle_minutes);
    return min(angle, 360.0-angle);
    }
    };
  • CPython 06-18 13:06
    5

    好耶 是OO的1


    class Solution:
    def angleClock(self, hour: int, minutes: int) -> float:
    h = (hour % 12) * 30 + (minutes / 2)
    m = minutes * 6

    return (180 - abs(h - m)) % 180 if abs(h - m) > 180 else abs(h - m)
  • 咪帕 06-18 13:39
    6

    ^-^题目


    class Solution:
    def angleClock(self, hour: int, minutes: int) -> float:
    h_angle = (hour % 12) * 30 + minutes / 2
    m_angle = minutes * 6
    sub = abs(m_angle - h_angle)
    return min(sub, 360 - sub)
  • 魔法师 楼主 06-19 09:27
    7

    其实算法的本质就是解决某种问题的方法,是前人探索出的优美解法。


    不用想着算法有多难,抛开算法不谈,就想着要怎么解决这个问题,如果没有想到好方法就学习下别人的方法,这样子~

* 帖子来源Linux.do
返回