程式語言 - LeetCode - C++ - 523. Continuous Subarray Sum



題目:


方法:


解答:

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        int prefix = 0;
        int n = nums.size();
        unordered_map<int, int> mp;

        mp[0] = -1;
        for (int i = 0; i < n; ++i) {
            prefix += nums[i];

            int mod = prefix % k;

            if (mp.count(mod)) {
                if (i - mp[mod] >= 2) {
                    return true;
                }
            }
            else {
                mp[mod] = i;
            }
        }

        return false;
    }
};