Search Blogs

Showing results for "Clock Angle"

Found 1 result

LeetCode 1344: Angle Between Hands of a Clock – Java Mathematical Solution Explained

LeetCode 1344: Angle Between Hands of a Clock – Java Mathematical Solution Explained

IntroductionLeetCode 1344, Angle Between Hands of a Clock, is a classic mathematics and geometry problem frequently asked in coding interviews.Unlike many algorithmic problems involving arrays, trees, or dynamic programming, this challenge focuses entirely on understanding how an analog clock works and converting that understanding into a simple mathematical formula.The goal is to determine the smaller angle formed between the hour hand and the minute hand for a given time.This problem is an excellent example of how mathematical observation can transform what appears to be a simulation problem into a constant-time solution.Problem Link - Angle Between Hands of a ClockProblem StatementGiven:An integer hourAn integer minutesReturn the smaller angle formed between:The hour handThe minute handof an analog clock.The answer should be accurate within 10^-5.Example 1Inputhour = 12minutes = 30Output165ExplanationAt 12:30:Minute hand points at 6Hour hand lies halfway between 12 and 1The smaller angle between them is:165°Example 2Inputhour = 3minutes = 30Output75Example 3Inputhour = 3minutes = 15Output7.5Understanding Clock MathematicsTo solve this problem efficiently, we first need to understand how clock hands move.Minute Hand MovementA clock contains:360°and60 minutesTherefore:360 / 60 = 6°The minute hand moves:6° per minuteFormula:Minute Angle = 6 × minutesExample:30 minutes6 × 30 = 180°Hour Hand MovementThe clock has:12 hoursand360°Therefore:360 / 12 = 30°The hour hand moves:30° per hourFormula:Hour Angle = 30 × hourHowever, most beginners miss one important detail.The Hour Hand Never Stays StillAt 3:30, the hour hand is not exactly at 3.It moves continuously as minutes pass.Since:30° per hourand60 minutes per hourthe hour hand moves:30 / 60 = 0.5°per minute.Therefore:Hour Angle =(30 × hour) + (0.5 × minutes)Deriving the Final FormulaMinute hand angle:6 × minutesHour hand angle:30 × hour + 0.5 × minutesDifference:|Hour Angle − Minute Angle|Substituting:|(30 × hour + 0.5 × minutes)− (6 × minutes)|Simplifying:|30 × hour − 5.5 × minutes|This gives one angle.But clocks always form two angles.Choosing the Smaller AngleSuppose:Difference = 250°The other angle would be:360 − 250 = 110°Since the problem asks for the smaller angle:Math.min(diff, 360 - diff)Optimal Java Solutionclass Solution { public double angleClock(int hour, int minutes) { double angle = Math.abs((30 * hour) - (5.5 * minutes)); return angle > 180 ? 360 - angle : angle; }}Dry RunInputhour = 3minutes = 15Hour Hand Angle30 × 3 = 900.5 × 15 = 7.5Total = 97.5°Minute Hand Angle6 × 15 = 90°Difference|97.5 - 90|=7.5°Smaller Angle7.5°Output:7.5Dry Run 2Inputhour = 12minutes = 30Formula|30 × 12 − 5.5 × 30||360 − 165|195°Since:195 > 180Choose:360 − 195=165°Output:165Why This Solution Is OptimalMany beginners attempt to:Simulate clock positionsCreate arraysUse loopsNone of these are required.The entire problem can be solved using a direct mathematical formula.No iteration is needed.No additional data structures are needed.Complexity AnalysisTime ComplexityO(1)Only a few arithmetic operations are performed.Space ComplexityO(1)No extra memory is used.Common Interview MistakesMistake 1Ignoring minute movement of the hour hand.Wrong:Hour Angle = 30 × hourCorrect:Hour Angle =30 × hour + 0.5 × minutesMistake 2Returning the larger angle.The problem asks for:Smaller AngleAlways compare:angleand360 - angleMistake 3Forgetting absolute value.Without:Math.abs()negative angles may occur.Key TakeawaysMinute hand moves 6° every minute.Hour hand moves 30° every hour.Hour hand also moves 0.5° every minute.The formula simplifies to:|30 × hour − 5.5 × minutes|Always return the smaller of the two possible angles.The solution runs in O(1) time and O(1) space.ConclusionLeetCode 1344: Angle Between Hands of a Clock is a beautiful mathematical problem that demonstrates how understanding the underlying mechanics of a clock leads to an elegant constant-time solution.Instead of simulating movement, we directly calculate the positions of both hands using geometry and arithmetic. This results in a clean, interview-friendly solution with optimal performance.Problems like this highlight an important lesson in programming:Sometimes the best algorithm is not an algorithm at all—it is mathematics.

LeetcodeJavaMediumClock AngleMaths
Ai Assistant Kas