classSolution { public: boolcheckSubarraySum(vector<int>& nums, int k){ int n = nums.size(); if (n < 2) returnfalse; if (!k) { for (int i = 1; i < n; ++i) { if (!nums[i] && !nums[i-1]) { returntrue; } } returnfalse; } unordered_map<int, int> mp; mp[0] = 0; int sum = 0; for (int i = 0; i < n; ++i) { (sum += nums[i]) %= k; if (mp.find(sum) == mp.end()) { mp[sum] = i + 1; } elseif (i + 1 - mp[sum] >= 2) { returntrue; } } returnfalse; } };
python
classSolution: defcheckSubarraySum(self, nums: List[int], k: int) -> bool: n = len(nums) if k == 0: for i inrange(1, n): if nums[i] == 0and nums[i-1] == 0: returnTrue returnFalse mp = {} mp[0] = 0 sum = 0 for i inrange(n): sum += nums[i] sum %= k ifsumnotin mp: mp[sum] = i + 1 elif i + 1 - mp[sum] >= 2: returnTrue returnFalse