523. Continuous Subarray Sum

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        unordered_map<int,int> m;   // 从头元素开始的sum,取模为key的index。
        m[0] = -1;
        int _sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            _sum += nums[i];
            if (k != 0)  
                _sum = _sum % k;
            if (m.find(_sum) != m.end()) {
                if (m[_sum]+1 < i)
                    return true;
            }
            else {
                m[_sum] = i;
            }
        }
        return false;
    }
};

 

posted @ 2018-05-29 23:13  JTechRoad  阅读(85)  评论(0编辑  收藏  举报