LeetCode 1344. 时钟指针的夹角
题目描述
给你两个数 hour
和 minutes
。请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度(60 单位制)。
输入格式
输入共一行,包含两个整数 hour
和 minutes
。
输出格式
输出共一行,包含 1 个整数,表示时针和分针形成的角度。
数据范围
-
1 <= hour <= 12
-
0 <= minutes <= 59
-
与标准答案误差在 1 0 − 5 10^{-5} 10−5 以内的结果都被视为正确结果。
样例:
输入:hour = 12, minutes = 30
输出:165
输入:hour = 3, minutes = 30
输出:75
输入:hour = 3, minutes = 15
输出:7.5
输入:hour = 4, minutes = 50
输出:155
输入:hour = 12, minutes = 0
输出:0
算法
(数学 + 推公式)
-
钟表上每一个小格是
6
度。 -
分针每增加一分钟,时针会移动
0.5
度。 -
分别计算出 时针 和 分针 距离
12
点的度数,答案就是差的绝对值。分针直接用 度数 * 6,时针直接用 度数 * 30 + 分针对时针影响的偏移量。 -
如果答案大于了
180
度,则求360
度的补角。
时间复杂度 O(1)
- 直接推公式,时间复杂度为常数。
空间复杂度
- 仅需常数的额外空间。
C++ 代码
class Solution {
public:
double angleClock(int hour, int minutes) {
double minutes_shifting = minutes * 6;
double hour_shifting = hour % 12 * 30 + minutes / 2.0;
double ans = fabs(minutes_shifting - hour_shifting);
ans = min(ans, 360 - ans);
return ans;
}
};
相关文章
- Java实现LeetCode 5450. 满足条件的子序列数目(双指针)
- Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)
- Java实现 LeetCode 532 数组中的K-diff数对(双指针,滑动窗口)
- Java实现 LeetCode 523 连续的子数组和(ง •_•)ง
- Java实现 LeetCode 467 环绕字符串中唯一的子字符串
- Java实现 LeetCode 451 根据字符出现频率排序
- Java实现 LeetCode 275 H指数 II
- Java实现 LeetCode 189 旋转数组
- Java实现 LeetCode 154 寻找旋转排序数组中的最小值 II(二)
- Java实现 LeetCode 88 合并两个有序数组
- Java实现LeetCode_0020_ValidParentheses
- 【数组&双指针】LeetCode 76. 最小覆盖子串【困难】
- LeetCode-1487. 保证文件名唯一【哈希表,字符串】
- LeetCode-283. 移动零【数组,双指针】
- LeetCode-234. 回文链表【链表,双指针】
- LeetCode-870. 优势洗牌【贪心,双指针,排序,数组】
- LeetCode-915. 分割数组【双指针,数组】
- leetcode 167. 两数之和 II - 输入有序数组----双指针篇六,二分篇二
- Leetcode 506. 相对名次(可以,一次过)
- [LeetCode] 18. 四数之和 ☆☆☆(双指针)
- leetcode 斐波那契数列 javascript实现
- leetcode 21. Merge Two Sorted Lists
- leetcode 258. Add Digits——我擦,这种要你O(1)时间搞定的必然是观察规律,总结一个公式哇
- 【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
- 【53】最大子数组和【LeetCode】