1. 程式人生 > 其它 >523. 連續的子陣列和

523. 連續的子陣列和

給你一個整數陣列 nums 和一個整數k ,編寫一個函式來判斷該陣列是否含有同時滿足下述條件的連續子陣列:

子陣列大小 至少為 2 ,且
子陣列元素總和為 k 的倍數。
如果存在,返回 true ;否則,返回 false 。

如果存在一個整數 n ,令整數 x 符合 x = n * k ,則稱 x 是 k 的一個倍數。0 始終視為 k 的一個倍數。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/continuous-subarray-sum
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.HashMap;
import java.util.Map;

class Solution {
    public boolean checkSubarraySum(int[] nums, int k) {
        if (nums == null || nums.length < 2) {
            return false;
        }
        Map<Integer, Integer> helper = new HashMap<>();
        helper.put(0, -1);
        int sum = 0;
        for (int i = 0; i < nums.length; ++i) {
            sum = (sum + nums[i]) % k;
            Integer index = helper.get(sum);
            if (index != null && i - index >= 2) {
                return true;
            }
            helper.putIfAbsent(sum, i);
        }
        return false;
    }
}
心之所向,素履以往 生如逆旅,一葦以航