美文网首页
413. 等差数列划分

413. 等差数列划分

作者: 漫行者_ | 来源:发表于2021-08-10 23:38 被阅读0次

413. 等差数列划分

做这题的适合没有注意子数组的解释,所以读题一定要仔细啊。
对于动态规划的题,先决条件一定是可以用暴力深度遍历可以做的,
然后另外一个绝大数特征就是求个数这种。

在这里的思考,设置一个dp数组,第i个数表示必须以第i个数结尾的所有子数组的个数。
那么当第i+1个数的差和之前差一样的时候。就说明dp[i+1]=dp[i]+1;

class Solution {
     public int numberOfArithmeticSlices(int[] nums) {
        if(nums.length < 3) return 0;
        int dp[] = new int[nums.length];
        int array[] = new int[nums.length];
        for (int i = 1; i < nums.length; i++) {
            array[i] = nums[i] - nums[i-1];
        }
        for(int i=2; i<array.length; i++) {
            if(array[i] == array[i-1]) {
                dp[i] = dp[i-1] + 1;
            }
        }
        int sum= 0;
        for (int i = 0; i < dp.length; i++) {
            sum+=dp[i];
        }
        return sum;
    }
}

相关文章

网友评论

      本文标题:413. 等差数列划分

      本文链接:https://www.haomeiwen.com/subject/zahqbltx.html