用了prefix sum的思想,之前没用过,感觉很难

/*** Runtime: 18 ms, faster than 56.05%* Memory Usage: 42.9 MB, less than 35.03%*/
class Solution {public int subarraysDivByK(int[] nums, int k) {HashMap<Integer, Integer> map = new HashMap(); // prefixSum, cntmap.put(0, 1);int count = 0, prefixSum = 0;for (int i : nums) {// prefixSum表示从第一个元素到当前元素的和,比k的倍数大了多少prefixSum = (i + prefixSum) % k;if (prefixSum < 0) { // 把范围控制在0~k,不要出现负数prefixSum += k;}// 在map中找之前有多少个也比k的倍数大prefixSum的,每一个和当前部分相减都是一个有效连续子区间int preCnt = map.getOrDefault(prefixSum, 0);count += preCnt;map.put(prefixSum, preCnt + 1); // 更新map中比k的倍数大prefixSum的前缀序列个数}return count;}
}

974. Subarray Sums Divisible by K [Medium]相关推荐

  1. leetcode 974. Subarray Sums Divisible by K

    974. Subarray Sums Divisible by K 题意:给你一个数组A和一个数K,求改数组有多少连续子序列的和能被K整除. 思路:简单DP.假设sum[i]表示[0-i]的求和,那么 ...

  2. leetcode 974 Subarray Sums Divisible by K

    leetcode 974 Subarray Sums Divisible by K 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除 ...

  3. 【leetcode】974. Subarray Sums Divisible by K

    题目如下: Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have ...

  4. LeetCode:974. Subarray Sums Divisible by K - Python

    974. 和可被 K 整除的子数组 问题描述: 给定一个整数数组 A,返回其中元素之和可被K整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出 ...

  5. 974. Subarray Sums Divisible by K

    Title 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满 ...

  6. leetcode 974. Subarray Sums Divisible by K的解法(统计共同余数)

    题目大意:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目 大致思路:比如数组A = [1,2,1], K=2,那么1%2 =1,(1+2)%2=1,所以 {2}是符合 ...

  7. LeetCode 974. Subarray Sums Divisible by K--Python解法--数学题--取模求余

    LeetCode 974. Subarray Sums Divisible by K–Python解法–数学题–取模求余 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结 ...

  8. 【LeetCode】713. Subarray Product Less Than K 乘积小于 K 的子数组

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 文章目录 题目描述 题目大意 解题方法 滑动窗口 复杂度 分享滑动窗口模板 总结 日期 ...

  9. 713. Subarray Product Less Than K

    1.题目描述 输入数组(positive)和一个k,求数组中有多少个subarray乘积是小于k的. 2.思路 碰到subarray问题,有几个方案: 1.动归[求连续最大什么的] 2.two poi ...

最新文章

  1. python画直方图成绩分析-使用Python绘制直方图和正态分布曲线
  2. 关于按值传递和按引用传递(送给这个方面的新手——包括我自己)
  3. 科大星云诗社动态20220104
  4. 【学术相关】研究生、博士生全程只靠自己能否发一篇 SCI?
  5. DataSet.Relations 属性
  6. C# WPF开源控件库:MahApps.Metro
  7. Android 编码规范:(六)消除过期的对象引用
  8. 每天进步一点点《ML - 高斯混合模型》
  9. TCP/IP协议栈:TCP超时重传机制
  10. java日期互转:LocalDateTime、String、Instant、Date
  11. 测试freenas9.1搭建iscsi磁盘库
  12. HTML的Demo实例
  13. 如何下载中国卫星地图高清版大图
  14. hadoop之大数据生态系统的前世今生
  15. 关于Windows-Linux双系统的启动引导
  16. poi-java导出word的表格中换行
  17. 让Kodu动起来---Kodu少儿编程第五天
  18. input常见输入限制及金额转货币
  19. java syslog-ng_syslog-ng详细安装配置
  20. 电脑上做的ppt拿到别的电脑或手机上播放的时候字体错位的解决方法

热门文章

  1. Android 访问系统相册选中图片,并返回该图片的路径
  2. ffmpeg官方下载网址
  3. JavaEE进阶——全文检索之Lucene框架
  4. UDS诊断看这篇就够了,吐血整理
  5. 解决金山词霸和有道词典不能对pdf文档屏幕取词的方法
  6. 夯实C++基础学习笔记
  7. 什么是二级指针和为什么要用二级指针
  8. 分布式系统设计模式 - 最低水位线(Low-Water Mark)
  9. Java web--利用java操作excel文档
  10. MonoRail - 简介