可被三整除的最大和

2021-10-11 15:51:06 字數 1443 閱讀 8357

可被三整除的最大和

給你乙個整數陣列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 整除的最大和)

dfs(超時)

private int maxsum = 0;

public int maxsumdivthree (int nums)

public void dfs(int nums, int i, int sum)

} else

}

動態規劃

dp[i]表示num%3=i時考慮到num時的最大和

狀態轉移方程:

nums[i] %3 = 0:

dp[0]=max(dp[0],dp[0]+nms[i]);

dp[1]=max(dp[1],dp[1]+nms[i]);

dp[2]=max(dp[2],dp[2]+nms[i]);

nums[i] %3 = 1:

dp[0]=max(dp[0],dp[2]+nms[i]);

dp[1]=max(dp[1],dp[0]+nms[i]);

dp[2]=max(dp[2],dp[1]+nms[i]);

nums[i] %3 = 2:

dp[0]=max(dp[0],dp[1]+nms[i]);

dp[1]=max(dp[0],dp[2]+nms[i]);

dp[2]=max(dp[0],dp[0]+nms[i]);

public int maxsumdivthree (int nums) ;

for (int i = 0; i < nums.length; i++)

dp = temp;

}return dp[0];

}

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。示...

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

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