LeetCode 523. 连续的子数组和 (哈希表、前缀和、同余)

523. 连续的子数组和
力扣类似这样的题目实在是不少,
子串使用前缀和的思想,为了记录,使用unordered_mao

class Solution {
    
    
public:
    bool checkSubarraySum(vector<int>& a, int k) {
    
    
        if(k==0){
    
    
            int t = 0;
            for(int i=0;i<a.size();i++){
    
    
                if(a[i]==0){
    
    
                    if(++t==2) return true;
                }else t = 0;
            }
            return false;
        }
        unordered_map<int,int> vis;
        int t = 0;
        vis[0] = -1; 
        for(int i=0;i<a.size();i++){
    
        
            t = (t+a[i])%k;
            if(vis.find(t)!=vis.end()){
    
    
                if(i-vis[t]>=2) return true; 
            }else {
    
    
                vis[t] = i;
            }
        } 
        return false;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44846324/article/details/109007039