LeetCode練習問題解析-Minimum Time Difference

1305 ワード

Kindemのブログから

に質問


Given a list of 24-hour clock time points in "Hour:Minutes"format, find the minimum minutes difference between any two time points in the list.
Example 1:
Input: ["23:59","00:00"]
Output: 1

Note:
  • The number of time points in the given list is at least 2 and won't exceed 20000.
  • The input time is legal and ranges from 00:00 to 23:59.

  • 私のやり方

  • は、最初に与えられたすべての時間を分数
  • に変換する.
    次いで、
  • から変換後の分数容器は、小さい順に
  • に並べ替えられる.
  • 隣接間の時間の分数差(最小は隣接するに違いないが、遠くに離れることは不可能であり、計算量を大幅に減らすことができる)
  • を計算する.
  • 最後に1回の頭と尾の分数差を計算する、すなわち頭分数に24 x 60分を加えて尾分数
  • を減算する.
  • 最小値
  • を保持
    時間的複雑さ:O(n),以下にコードを示す
    class Solution:
        def findMinDifference(self, timePoints):
            """
            :type timePoints: List[str]
            :rtype: int
            """
            minutes = [int(time[0:2]) * 60 + int(time[3:5]) for time in timePoints]
            minutes.sort()
    
            ans = 24 * 60
            for i in range(0, len(minutes) - 1):
                tmp = minutes[i + 1] - minutes[i]
                if tmp < ans:
                    ans = tmp
            tmp = minutes[0] + 24 * 60 - minutes[-1]
            if tmp < ans:
                ans = tmp
    
            return ans