news 2026/7/1 15:22:19

A.每日一题:1344. 时钟指针的夹角

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A.每日一题:1344. 时钟指针的夹角

题目链接:1344. 时钟指针的夹角(中等)

算法原理:

我们简单找找规律~~

差值为6:180°

差值为9:90°

类似的:

差值为11:30°

差值为10:60°

差值为8:120°

度数=(12-差值)✖️30°

左半边相反:差值✖️30°

有的同学就直接写成了⬇️

class Solution { //1344. 时钟指针的夹角 public double angleClock(int hour, int minutes) { //差值为6:180° //差值为9:90° //类似的: //差值为11:30° //差值为10:60° //差值为8:120° //度数=(12-差值)✖️30° //左半边相反:差值✖️30° double num=minutes/5.0; double d=hour-num; if(hour<6) return (12-d)*30%180; return d*30%180; } }

但结果⬇️

关键易错点复盘

易错点 1:时针位置忽略分钟带来的偏移(最核心高频错误)
错误表现:直接用整点小时数计算时针位置(比如 3:30 默认时针在数字 3 处),最终结果偏差固定数值(如这里差了 15°)
本质原因:对时钟运行逻辑的直觉错误 —— 时针不是整点才 “跳一格”,分针转动时,时针会同步匀速偏移
量化规则:时针每小时走 30°(360°÷12),对应每分钟走 0.5°(30°÷60);也可以理解为:每过 1 分钟,时针前进 1/60 个大刻度。
修正方式:时针角度 = (hour % 12) × 30° + minutes × 0.5
易错点 2:用 % 180 求最小夹角(逻辑完全错误)
错误表现:试图用角度对 180 取模,直接得到较小角
本质原因:混淆了 “取模运算” 和 “取圆周短弧” 的逻辑。取模是求余数,不是求 360° 圆周上的补角
反例验证:若两针角度差为 200°,较小角应为 360°-200°=160°;但 200 % 180 = 20,结果完全错误
正确做法:Math.min(差值, 360 - 差值),永远取两个夹角中更小的那个
易错点 3:臆造 “分情况、分左右” 的夹角规律
错误表现:比如你代码里的 if(hour<6) 分支,从少量特例总结出 “差值反向” 的规律,试图分情况计算。
本质原因:用直觉代替数学推导,分情况逻辑极易遗漏边界场景(比如分针在时针左侧 / 右侧、跨 12 点位置等),代码越写越乱还容易错。
正确做法:统一计算两针的绝对角度 → 求绝对差值 → 取最小角。全程无需分支判断,逻辑简洁且无遗漏。
易错点 4:小时数未对 12 取模
错误表现:直接用 hour * 30 计算,遇到 12 点、超过 12 点的数值时逻辑异常。
本质原因:时钟是 12 小时循环,12 点的时针位置等价于 0 点,而非 12×30=360° 的位置。
修正方式:计算时针角度前先做 hour % 12,把小时映射到 0~11 的刻度区间。
易错点 5:整数除法导致精度截断
错误表现:比如写 minutes / 5 而非 minutes / 5.0,Java 中整数相除会直接舍弃小数部分。
反例验证:minutes=7 时,7/5=1(整数除法),但实际分针位置是 1.4 个刻度,误差会被放大
修正方式:涉及刻度、角度计算时,强制使用浮点数运算(除数写为 5.0、60.0 等)
易错点 6:分针 / 时针转速公式记错
错误表现:混淆指针转速,比如误以为分针每分钟走 1°、每大刻度对应 6 分钟等
核心公式必须记牢:
分针:每分钟走 6°(360° ÷ 60 分钟)
时针:每小时走 30°(360° ÷ 12 小时),每分钟走 0.5°

解法一:刻度法

0ms击败100.00%

时间复杂度O(1)

1️⃣分针所在的刻度位置(每5分钟1个大刻度)

2️⃣时针所在的刻度位置(整点刻度 + 分钟带来的偏移)

3️⃣刻度差的绝对值

4️⃣每个刻度对应 30 度

5️⃣取较小夹角

解法二:角度法

0ms击败100.00%

时间复杂度O(1)

1️⃣计算分针角度:每分钟走 6 度 (360/60)

2️⃣计算时针角度:整点走 30 度/小时 + 分钟偏移 0.5 度/分钟

3️⃣求两针角度差的绝对值

4️⃣返回较小的夹角(圆周 360 度,取小的那段弧)

Java代码:

class Solution { //1344. 时钟指针的夹角 //解法一:刻度法 public double angleClock(int hour, int minutes) { // 分针所在的刻度位置(每5分钟1个大刻度) double minuteMark = minutes / 5.0; // 时针所在的刻度位置(整点刻度 + 分钟带来的偏移) double hourMark = (hour % 12) + minutes / 60.0; // 刻度差的绝对值 double diffMark = Math.abs(hourMark - minuteMark); // 每个刻度对应 30 度 double angle = diffMark * 30; // 取较小夹角 return Math.min(angle, 360 - angle); } }
class Solution { //1344. 时钟指针的夹角 //解法二:角度法 public double angleClock(int hour, int minutes) { // 1. 计算分针角度:每分钟走 6 度 (360/60) double minuteAngle = minutes * 6.0; // 2. 计算时针角度:整点走 30 度/小时 + 分钟偏移 0.5 度/分钟 // hour%12 处理 12 点等价于 0 点的情况 double hourAngle = (hour % 12) * 30.0 + minutes * 0.5; // 3. 求两针角度差的绝对值 double diff = Math.abs(hourAngle - minuteAngle); // 4. 返回较小的夹角(圆周 360 度,取小的那段弧) return Math.min(diff, 360 - diff); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 11:31:00

【2026】超详细中望CAD机械版2026安装保姆级教程,永久免费使用,机械设计环境配置指南,看完这一篇就够了

文章目录前言中望CAD机械版下载中望CAD机械版2026安装教程(超详细)中望CAD机械版2026打不开图纸&#xff1f;报错原因及修复方法前言 搞机械设计的朋友应该都听说过中望CAD机械版&#xff0c;这是中望龙腾旗下很成熟的一款专业CAD机械设计软件&#xff0c;涵盖2D制图、几何对象…

作者头像 李华
网站建设 2026/6/30 7:28:36

冯·诺依曼结构和哈佛结构

冯诺依曼结构和哈佛结构是计算机领域的两种基本体系架构&#xff0c;其核心区别在于指令和数据是否分开存储与传输。 一、冯诺依曼结构 (Von Neumann Architecture) 冯诺依曼结构&#xff0c;也叫普林斯顿结构&#xff0c;其核心思想是将指令和数据存放在同一个存储器中&#x…

作者头像 李华
网站建设 2026/6/29 7:47:46

激光焊接不只是替掉了钎焊——它正在重新定义液冷板能长什么样

大多数人看到"激光焊接取代真空钎焊"这个标题&#xff0c;脑子里的画面是&#xff1a;同样的液冷板&#xff0c;用一台新设备焊出来。做得更快、良率更高、成本更低——仅此而已。但如果激光焊只是替掉了钎焊&#xff0c;那它只发挥了不到一半的价值。真正的变革不是…

作者头像 李华
网站建设 2026/6/29 10:37:37

TensorFlow 学习

目录 1. TensorFlow 是什么2. 安装与验证3. 学习路线4. Tensor 基础5. 自动求导与 GradientTape6. Keras 快速上手7. tf.data 数据管道8. 完整示例一&#xff1a;线性回归9. 完整示例二&#xff1a;二分类模型10. 完整示例三&#xff1a;MNIST 图像分类11. 保存、加载与推理12…

作者头像 李华
网站建设 2026/6/29 10:37:22

Linux命令-pwd(打印当前工作目录)

Linux命令-pwd&#xff08;打印当前工作目录&#xff09;快速参考命令语法常用选项核心概念&#xff1a;逻辑路径 vs 物理路径实战示例1. 基础使用2. 逻辑路径&#xff08;-L&#xff09;示例3. Shell 内置 vs 外部命令4. 脚本中的实用模式5. 在提示符中使用 pwd6. 高级&#x…

作者头像 李华
网站建设 2026/6/30 17:27:31

三分钟带你认识有机溶质转运蛋白(OST)家族

有机溶质转运蛋白&#xff08;OST&#xff09;有机溶质转运蛋白&#xff08;Organic Solute Transporter&#xff0c;OST&#xff09;家族是一类重要的膜转运蛋白&#xff0c;在维持机体胆汁酸和固醇类物质的稳态平衡中发挥着核心作用。OST蛋白属于溶质载体&#xff08;SLC&…

作者头像 李华