Leetcode 1388 Solution

This article provides solution to leetcode question 1388 (greatest-sum-divisible-by-three)

https://leetcode.com/problems/greatest-sum-divisible-by-three

Solution

class Solution: def maxSumDivThree(self, nums: List[int]) -> int: s = sum(nums) r = s % 3
if r == 0: return s
def find_one_small_num(r): nonlocal nums opt = None
for num in nums: if num % 3 != r: continue
if opt is None or opt > num: opt = num
return opt and [opt]
def find_two_small_nums(r): nonlocal nums opt1 = None opt2 = None
for num in nums: if num % 3 != r: continue
if opt1 is None or opt1 > num: opt2 = opt1 opt1 = num elif opt2 is None or opt2 > num: opt2 = num
return opt1 and opt2 and [opt1, opt2]
answers = [] if r == 1: opts = find_one_small_num(1) if opts is not None: answers.append(s - sum(opts))
opts = find_two_small_nums(2) if opts is not None: answers.append(s - sum(opts)) elif r == 2: opts = find_one_small_num(2) if opts is not None: answers.append(s - sum(opts))
opts = find_two_small_nums(1) if opts is not None: answers.append(s - sum(opts))
return max(answers)