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. 解题

  • 类似题目:
    LeetCode 560. 和为K的子数组(前缀和差分)
    LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)
    LeetCode 974. 和可被 K 整除的子数组(哈希map)

  • 对前n个数求和,每次和对k取余,存入哈希表m[sum%k] = i

  • 再次找到时,表明存在区间和为k的倍数

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;}elsem[sum] = i;}return false;}
};

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

  1. Leetcode 523 连续的子数组和 前缀和 + 哈希表

    题目链接 一维前缀和思想: s u m [ i ] sum[i] sum[i] = s u m [ i − 1 ] sum[i-1] sum[i−1] + a [ i ] a[i] a[i] sum[ ...

  2. leetcode 523. Continuous Subarray Sum | 523. 连续的子数组和(同余定理)

    题目 https://leetcode.com/problems/continuous-subarray-sum/ 题解 没有想到 O(n) 的方法,于是直奔答案: 参考1:[宫水三叶]拓展到求方案数 ...

  3. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

  4. leetcode算法题--连续的子数组的和

    原题链接:https://leetcode-cn.com/problems/continuous-subarray-sum/ 1.暴力 这题用暴力方法非常简单的 bool checkSubarrayS ...

  5. LeetCode简单题之子数组最大平均数 I

    题目 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k . 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数. 任何误差小于 10-5 的答案都将被视为正确答案. 示例 ...

  6. leetcode —— 523. 连续的子数组和

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

  7. leetcode 523. 连续的子数组和

    给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: 子数组大小 至少为 2 ,且 子数组元素总和为 k 的倍数. 如果存在,返回 true : ...

  8. LeetCode简单题643.子数组的最大平均数I

    if(nums.length==1)return nums[0];int max=Integer.MIN_VALUE;for (int i = 0; i <=nums.length-k ; i+ ...

  9. LeetCode 930. 和相同的二元子数组(哈希+前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组. 示例: 输入:A = [1,0,1,0,1], S = 2 输出:4 解释: ...

最新文章

  1. RAC 实例 迁移到 单实例 -- 使用导出导入
  2. JavaScript中for..in循环陷阱介绍
  3. 为了孩子上名校,他们发论文给子女署名,Nature发文报道韩国学术不当行为
  4. OpenCV 升降维度
  5. java闪屏怎么制作,Java Swing创建自定义闪屏:在闪屏下画进度条(一)
  6. 开源视觉salm算法介绍
  7. c语言 乘除法优先级,运算符运算符优先级 - C语言教程
  8. 让Minimal开源UI组件支持中文
  9. 转:Maven通俗讲解
  10. ACS880变频器主从配置
  11. ubuntu14.04小米无线网卡驱动安装
  12. Android识别图片中的WIFI二维码,并自动连接
  13. Unable to find a single main class from the following candidates 。。。
  14. centos 测试get请求_centos网站服务器简单性能测试命令
  15. DeepCross(DCN)模型及torch实现
  16. tplink迷你路由器中继模式_TP-Link路由器无线中继/桥接设置教程
  17. 前高管苏箐离职,原因或在于他的“杀人”言论同样对华为自身不利
  18. Windows10系统提速优化
  19. 计算机教师教育笔记,信息技术教师的读书笔记
  20. Android利用ffmpeg压缩视频

热门文章

  1. 脚本命令配置mysql_MySQL 自动化部署脚本
  2. 网络层:IP协议详解(IP协议真的得看这篇)
  3. navicat不同数据库数据传输
  4. 深入理解golang 的栈
  5. 在Android初次的前期学习中的二个小例子(2)
  6. 进制A~Z,全字母26进制转化
  7. Linux根目录详解-转自鸟哥的私房菜
  8. 安装数据库windows 安装redmine 详解
  9. 糟糕的C语言睡眠排序算法
  10. 感觉stm32太简单是一种自负吗?