1262 可被三整除的最大和 貪心 動態規劃

2021-10-01 02:57:43 字數 1008 閱讀 4756

給你乙個整數陣列 nums,請你找出並返回能被三整除的元素最大和。

示例 1:

輸入:nums = [3,6,5,1,8]

輸出:18

解釋:選出數字 3, 6, 1 和 8,它們的和是 18(可被 3 整除的最大和)。

示例 2:

輸入:nums = [4]

輸出:0

解釋:4 不能被 3 整除,所以無法選出數字,返回 0。

示例 3:

輸入:nums = [1,2,3,4,4]

輸出:12

解釋:選出數字 1, 3, 4 以及 4,它們的和是 12(可被 3 整除的最大和)。

1 <= nums.length <= 4 * 10^4

1 <= nums[i] <= 10^4

一.貪心做法。

如果一開始陣列中所有的數字和是3的倍數的話,那麼就直接輸出就可以了。

如果一開始陣列中所有的數字和取餘3等於1的話,有兩種情況:

①減去乙個取餘3為1的數字

②減去兩個取餘3為2的數字

這兩種情況取最優

如果一開始陣列中所有的數字和取餘3等於2的話,有兩種情況:

①減去乙個取餘3為2的數字

②減去兩個取餘3為1的數字

這兩種情況取最優

**如下:

class

solution

int x;

if(num%3==

0) x=num;

else

if(num%3==

1)else

return x;}}

;

動態規劃。

dp[i]代表著取餘3之後為i的最大值。o(n)的做法,在遍歷的時候不斷更新dp[i],最後輸出dp[0].

**如下:

class

solution

return dp[0]

;}};

努力加油a啊,(o)/~

1262 可被三整除的最大和

給你乙個整數陣列 nums,請你找出並返回能被三整除的元素最大和。示例 1 輸入 nums 3,6,5,1,8 輸出 18 解釋 選出數字 3,6,1 和 8,它們的和是 18 可被 3 整除的最大和 示例 2 輸入 nums 4 輸出 0 解釋 4 不能被 3 整除,所以無法選出數字,返回 0。示...

1262 可被三整除的最大和

給你乙個整數陣列 nums,請你找出並返回能被三整除的元素最大和。示例 1 輸入 nums 3,6,5,1,8 輸出 18 解釋 選出數字 3,6,1 和 8,它們的和是 18 可被 3 整除的最大和 示例 2 輸入 nums 4 輸出 0 解釋 4 不能被 3 整除,所以無法選出數字,返回 0。示...

可被三整除的最大和

可被三整除的最大和 給你乙個整數陣列nums,請你找出並返回能被三整除的元素最大和。示例 1 輸入 nums 3,6,5,1,8 輸出 18解釋 選出數字 3,6,1 和 8,它們的和是 18 可被 3 整除的最大和 示例 2 輸入 nums 4 輸出 0解釋 4 不能被 3 整除,所以無法選出數字...