LeetCode1262:可被三整除的最大和(动态规划)

该博客主要介绍了LeetCode中的第1262题,目标是找到数组中能被三整除元素的最大和。通过动态规划的方法,求解这一算法问题。
摘要由CSDN通过智能技术生成

1262. 可被三整除的最大和

给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。
在这里插入图片描述

 /**
     *  可被三整除的最大和:动态规划
     * dp[i][0]表示nums[0...i]模三余零的最大和
     * dp[i][1]表示nums[0...i]模三余一的最大和
     * dp[i][2]表示nums[0...i]模三余二的最大和
     * 零状态:当前数字最大和模三余零
     * 一状态:当前数字最大和模三余一
     * 二状态:当前数字最大和模三余二
     *
     * 对于任意一种状态,下一步我们都有两种选择,一是选择当前元素,二是不选择当前元素
     * 	dp[i][*] = max{dp[i-1][*],dp[i-1][*] + nums[i]}  (* 取值为 0,1,2)
     * 以上是常见的动态规划的递推结构
     * @param nums
     * @return
     */
    public int maxSumDivThree(int[] nums) {
   
        int n = nums.length;
        //状态定义:dp[i][j]:nums[0,...,i]模3余j的最大和
        int[][] dp = new int[n+1][3];
        //状态初始化
        dp[0][0] =0;
        dp[0][1] =Integer.MIN_VALUE;
        dp[0][2] = Integer.MIN_VALUE;

        //状态转移方程
        for(int i=
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值