523 Continuous Subarray Sum Sum of consecutive subarrays

See: https://leetcode.com/problems/continuous-subarray-sum/description/

C++:

method one:

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k)
    {
        for (int i = 0; i < nums.size(); ++i)
        {
            int sum = nums[i];
            for (int j = i + 1; j < nums.size(); ++j)
            {
                sum += nums[j];
                if (sum == k)
                {
                    return true;
                }
                if (k != 0 && sum % k == 0)
                {
                    return true;
                }
            }
        }
        return false;
    }
};

 Method Two:

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k)
    {
        int n = nums.size(), sum = 0, pre = 0;
        unordered_set<int> st;
        for (int i = 0; i < n; ++i)
        {
            sum += nums[i];
            int t = (k == 0) ? sum : (sum % k);
            if (st.count(t))
            {
                return true;
            }
            st.insert(pre);
            pre = t;
        }
        return false;
    }
};

 Reference: http://www.cnblogs.com/grandyang/p/6504158.html

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324665413&siteId=291194637