前言

前缀和相关:

  • leetcode 974. 和可被 K 整除的子数组(前缀和思想)
  • leetcode 560. 和为K的子数组(前缀和思想II)

问题来源

  • 974. 和可被 K 整除的子数组

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

大佬解析

  • 又见【前缀和】| 含 mod 运算的详细推导

代码

"""
需求:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。思想:前缀和取模(连续、非空)子数组 --> 相同去摸前缀和的位置组合数数组标记每个取模值出现频次组合数的意义步骤:初始化一个数组,用来存储每个取模值出现频次循环计算前缀和取模值,更新频次表根据组合数意义,更新当前有效子数组数目
"""class Solution:def subarraysDivByK(self, A, K: int) -> int:"""前缀和解法"""count = 0  # 统计相同的前缀和数量presum = 0  # 前缀和初始化为0count_arr = [0] * Kcount_arr[0] = 1  # 提前放入 0:1,表示 求第 0 项前缀和之前,前缀和 mod K 等于 0 已经出现了 1 次(此处与presum=0的初始化操作相呼应)for i in A:presum = (presum + i) % Kcount += count_arr[presum]  # 体现组合的思想count_arr[presum] += 1return count

【算法】leetcode 974. 和可被 K 整除的子数组(前缀和思想)相关推荐

  1. Leetcode 974. 和可被 K 整除的子数组 前缀和

    原题链接:Leetcode 974. 和可被 K 整除的子数组 class Solution {public:int subarraysDivByK(vector<int>& nu ...

  2. LeetCode 974. 和可被 K 整除的子数组 | Python

    974. 和可被 K 整除的子数组 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/subarray-sums-divisible-by-k 题目 ...

  3. LeetCode 974. 和可被 K 整除的子数组(哈希map)

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

  4. leetcode 974. 和可被 K 整除的子数组 详解

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

  5. 560. 和为K的子数组 974. 和可被 K 整除的子数组 (哈希表)

    引言 这两道题非常相似,也是对哈希表运用的考察,两道题合到一起总结一下 560. 和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入 ...

  6. [Leedcode][JAVA][第974题][和可被K整除的子数组][前缀和][HashSet]

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

  7. ⭐算法入门⭐《前缀和》中等02 —— LeetCode 974. 和可被 K 整除的子数组

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 1)初始化前缀和 2)哈希表统计 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题 ...

  8. LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)

    1. 题目 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K . 如果没有和至少为 K 的非空子数组,返回 -1 . 示例 1: 输入:A = [1], K = 1 输出:1示例 2: ...

  9. LeetCode——974.和可被K整除的子数组

    这几天力扣总算是放我这个菜鸡一马,来了一些中等难度题.和可被K整除的子数组,一看到反正最近脑子里都是双指针.滑动窗.前缀和.动态规划之类的东西.话不多说,赶紧看一看今天的题. 974.和可被K整除的子 ...

最新文章

  1. Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
  2. springboot 日志 log4j
  3. SQL 与oracle数据同步之 链接服务器
  4. JAVA SPI机制及SPI机制在Tomcat中的应用
  5. linux运行脚本文件python,Python脚本:Linux自动化执行Python脚本
  6. c语言与python通信_python和c++通信示例
  7. plsql打开sql窗口快捷键_巧用Navicat for MySQL的快捷键
  8. JUnit5 @Tag注解示例
  9. ExcelPackage 读取、导出excel
  10. Win10更换壁纸一直跳到纯色背景问题解决记录
  11. docker 自定义网络
  12. 新手如何让淘宝店铺的销量提升, 该如何做!
  13. java 文本文件合并_java实现文本文件合并
  14. 查找计算机所有图片文件夹,win10系统搜索电脑里的所有图片的操作方法
  15. Go语言反射规则 - The Laws of Reflection
  16. 使用Python实现Linux命令的批量执行
  17. GitHub页面接管并利用
  18. 35岁真的是职场分水岭吗
  19. 数控加工中心导致丝杠振动的原因分析
  20. 聊聊 JS 断点的实现

热门文章

  1. 小米8se刷android7系统,小米8SE Flyme8系统刷机包(系统刷机最新固件升级包)
  2. Spring中Bean及@Bean的理解
  3. linux命令行选项英文全称,【转载】Linux命令英文全称(方便理解)
  4. < Linux >:Linux 进程概念 (1)
  5. 短信验证码有什么限制?
  6. 网络 打开一个浏览器网页都要什么协议
  7. 公司AppleID的申请详细流程
  8. 高频前端面试题汇总之计算机网络篇
  9. vue零基础——vue2基础知识
  10. python入门2——基础语法2——字符串详解