美文网首页
连续的子数组和

连续的子数组和

作者: WAI_f | 来源:发表于2020-05-17 15:13 被阅读0次

题目:

给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。

示例:

输入: [23,2,4,6,7], k = 6
输出: True
解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。

说明:

  • 数组的长度不会超过10,000。
  • 你可以认为所有数字总和在 32 位有符号整数范围内。

解题方法:

这道题是我在leetcode上面选的一道leetcode动态规划题,看到题目以后我也想不出怎么用动规做,所以就用了双重循环来实现。运行的时候报错,错误主要来源于:

  • k=0,不能取余
  • 求和值为0,k=0

这个小问题在leetcode上引起了强烈的反响,纷纷关心出题人的亲戚,哈哈哈。
回到正题,经过修改:

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        int end=nums.size()-1;

        vector<int> sum(nums.size());
        sum[0]=nums[0];
        for(int i=1;i<nums.size();i++)
        {
            sum[i]=sum[i-1]+nums[i];
        }

        for(int i=0;i<end;i++)
        {
            int sv=sum[i]-nums[i];
            for(int j=i+1;j<=end;j++)
            {
                int temp=sum[j]-sv;
                if((temp==0&&k==0)||(k!=0&&temp%k==0))
                {
                    return true;
                }
            }
        }

        return false;
    }
};
运行结果:

sum数组用来记录累加和,i,j分别是连续子数组开始和终止的下标,利用sum[j]-sum[i]+nums[i]来获得子数组的和,然后再判断是否满足题目要求就可以了。运行反正是通过了,但是效果不是很好,至于动规反应在哪里,我也不知道,看了一下这道题的解答,大部分都是用类似的方法,所以也就不深究了,就这样吧。

原题链接:https://leetcode-cn.com/problems/continuous-subarray-sum/

相关文章

  • 【数组】--零子数组、最大连续子数组、数字连续子数组

    零子数组:对于长度为N的数组,求连续子数组和和最接近0的值和子数组最大连续子数组:给定一个数组A,求A的连续子数组...

  • 连续的子数组和

    题目: 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2...

  • 连续的子数组和

    给定一个包含 非负数 的数组和一个目标 整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,...

  • 连续子数组组和

    classSolution{ publicbooleancheckSubarraySum(int[]nums,in...

  • 最大连续子数组和

    /* 最大连续子数组和 给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每...

  • 数组中连续子数组的最大乘积(LeetCode152. 乘积最大子

    题目 解析 在了解连续子数组最大乘积之前,请先参考数组中连续子数组的最大和(LeetCode53. 最大子序和)[...

  • 最大连续子数组和

    最大连续子数组和 题目描述: 输入一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每...

  • 连续最大和

    一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3...

  • 523. 连续的子数组和

    523. 连续的子数组和 问题 给定一个包含非负数的数组和一个目标整数 ,编写一个函数来判断该数组是否含有连续的子...

  • 算法训练2

    题目描述:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],...

网友评论

      本文标题:连续的子数组和

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