Largest Time for Given Digits LeetCode solution in Python
1class Solution:2def largestTimeFromDigits(self, arr: List[int]) -> str:3res = ""4digit_freq = collections.Counter(arr)5# first digit67if 2 in arr and sum([digit_freq[d] for d in range(6)]) > 2:8res += "2"9arr.remove(2)10else:11for digit in [1, 0]:12if digit in arr:13res += str(digit)14arr.remove(digit)15break16# can't make 24-hour time17if len(res) == 0:18return ""1920# second digit 0-321if res == "2":22for digit in [3, 2, 1, 0]:23if digit in arr:24res += str(digit)25arr.remove(digit)26break27# no 0-3 left in arr28if len(res) == 1:29return ""30# second digit 0-931else:32for digit in range(9, -1, -1):33if digit in arr:34res += str(digit)35arr.remove(digit)36break3738res += ":"3940for digit in range(5, -1, -1):41if digit in arr:42res += str(digit)43arr.remove(digit)44break4546if len(res) == 3:47return ""4849for digit in range(9, -1, -1):50if digit in arr:51res += str(digit)52return res