Leetcode - Greatest Sum Divisible by Three
https://leetcode.com/problems/greatest-sum-divisible-by-three/
Given an array nums of integers, we need to find the maximum possible sum of elements of the array such that it is divisible by three.
Example 1:
Input: nums = [3,6,5,1,8] Output: 18 Explanation: Pick numbers 3, 6, 1 and 8 their sum is 18 (maximum sum divisible by 3).
Example 2:
Input: nums = [4] Output: 0 Explanation: Since 4 is not divisible by 3, do not pick any number.
Example 3:
Input: nums = [1,2,3,4,4] Output: 12 Explanation: Pick numbers 1, 3, 4 and 4 their sum is 12 (maximum sum divisible by 3).
func maxSumDivThree(nums []int) int {
leftOne := 20000
leftTwo := 20000
result := 0
for _, n := range nums {
result += n
if n % 3 == 1 {
leftTwo = min(leftTwo, leftOne+n)
leftOne = min(leftOne, n)
}
if n % 3 == 2 {
leftOne = min(leftOne, leftTwo+n)
leftTwo = min(leftTwo, n)
}
}
if result % 3 == 0 {
return result
}
if result % 3 == 1 {
return result - leftOne
}
return result - leftTwo
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
评论 (0)