題目描述
給你兩個數(shù) hour
和 minutes
谨究。請你返回在時鐘上,由給定時間的時針和分針組成的較小角的角度(60 單位制)。
輸入格式
輸入共一行哟楷,包含兩個整數(shù) hour 和 minutes
堕扶。
輸出格式
輸出共一行碍脏,包含 1 個整數(shù),表示時針和分針形成的角度稍算。
數(shù)據(jù)范圍
1 <= hour <= 12
0 <= minutes <= 59
與標準答案誤差在
以內(nèi)的結(jié)果都被視為正確結(jié)果典尾。
樣例:
1.png
輸入:hour = 12, minutes = 30
輸出:165
2.png
輸入:hour = 3, minutes = 30
輸出:75
3.png
輸入:hour = 3, minutes = 15
輸出:7.5
輸入:hour = 4, minutes = 50
輸出:155
輸入:hour = 12, minutes = 0
輸出:0
算法
(數(shù)學 + 推公式)
鐘表上每一個小格是
6
度。分針每增加一分鐘糊探,時針會移動
0.5
度钾埂。分別計算出 時針 和 分針 距離
12
點的度數(shù),答案就是差的絕對值科平。分針直接用 度數(shù) * 6褥紫,時針直接用 度數(shù) * 30 + 分針對時針影響的偏移量。如果答案大于了
180
度瞪慧,則求360
度的補角髓考。
時間復雜度 O(1)
- 直接推公式,時間復雜度為常數(shù)弃酌。
空間復雜度
- 僅需常數(shù)的額外空間氨菇。
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;
}
};