leetcode:523. 连续的子数组和

链接:https://leetcode-cn.com/problems/continuous-subarray-sum/
使用Hashmap,从第一个元素开始,将数组的部分和(模k)放入map中,寻找k-此部分和是否已在map中出现。注意要判断一下子数组元素是否至少为2。
java代码:

class Solution {
    public boolean checkSubarraySum(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>();
        map.put(0,-1);
        int sum = 0;
        for(int i = 0;i<nums.length;i++)
        {
            sum+=nums[i];
            if(k!=0)
            sum = sum%k;
            if(map.containsKey(sum)&&i-map.get(sum)>1)
                return true;
            else if(!map.containsKey(sum))
                map.put(sum,i);
        }
        return false;
    }
}

你可能感兴趣的:(leetcode)