首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 523. 连续的子数组和(求余 哈希)

LeetCode 523. 连续的子数组和(求余 哈希)

作者头像
Michael阿明
发布2020-07-13 15:23:20
4770
发布2020-07-13 15:23:20
举报

1. 题目

给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。

示例 1:
输入: [23,2,4,6,7], k = 6
输出: True
解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。

示例 2:
输入: [23,2,6,4,7], k = 6
输出: True
解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/continuous-subarray-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        unordered_map<int,int> m;
        int sum = 0;
        m[0] = -1;//如果整个数组和刚好为k,也满足
        for(int i = 0; i < nums.size(); ++i)
        {
        	sum += nums[i];
        	if(k != 0)
        		sum = sum%k;
    		if(m.find(sum) != m.end())
    		{
    			if(i-m[sum] > 1)
    				return true;
    		}
			else
    			m[sum] = i;
        }
        return false;
    }
};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档