【每日一题】Leetcode 974
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
解题思路
开心地“我引我自己”,在【每日一题】Leetcode 560的题解中就有提到过前缀和的概念。遇见子数组这种,(反正我见得少)直接往前缀和上想。问题中涉及到整除的概念,需要运用到一个小小的数学知识:
a % b = c % b,则 (a - c) % b = 0
前缀和虽然取值范围很大,但是取模后的余数也就那么多。这样,相同余数的子数组之间取差就一定能被整除。比如,被5模后余3,已经记录的余数是3的前缀和有两个,那么现在的这个前缀和与前两个一一匹配,就能得到两组被整除的子数组满足条件。
再多一嘴,用于存余数键值对的哈希表一定要初始化0:1,因为假如前缀和正好是除数的整倍数,没有0:1对会造成这样的数组不满足条件。
(不需要复杂的想组合数的)代码如下:
class Solution:def subarraysDivByK(self, A: List[int], K: int) -> int:record = {0: 1}total, res = 0, 0for a in A:total += am = total % Ksame = record.get(m, 0)res += samerecord[m] = same + 1return res
(今天很快就写完了,开心)
【每日一题】Leetcode 974相关推荐
- 每日一题 -- LeetCode (十六)
JavaScript / TypeScript for LeetCode 当前进程: 开始时间:2020.6.27 结束时间:undefined GitHub仓库:https://github.com ...
- 每日一题-leetcode 365. 水壶问题
有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升.水的供应是无限的.确定是否有可能使用这两个壶准确得到 targetCapacity 升. 如果可以得到 target ...
- 每日一题 leetcode 997. 找到小镇的法官 java
class Solution {public int findJudge(int n, int[][] trust) {if(trust.length==0){if(n==1) return 1;el ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- Leetcode 006. Z 字形变换 | 每日一题
题目描述: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
最新文章
- JavaSist之ClassPool
- nginx反向代理tomcat时遇到一个问题
- LongestPalindromeSequence
- 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)
- Java操作shell脚本
- 邮箱服务器怎么清理缓存,如何清除Outlook的附件缓存?
- Oracle DBA必须学会的11个Linux基本命令
- Php 取出session中的值,获取php值
- Java并发编程:线程的同步
- Unity 2D Skeletal Animation
- 应届毕业生如何打破面试焦虑
- maxdea如何计算指数_maxdea 5.0中文简体使用手册.pdf
- 微信扫一扫打印照片的原理以及实现过程(持续更新中)
- 拼多多百亿补贴商品详情数据抓取
- 最好的开源网络入侵检测工具(网址及版本已验证并更新)
- UVa12304(计算几何中圆的基本操作)
- 大连引入‘智慧路灯’助推‘智慧城区’建设,道路改造25基高杆灯
- 区块链学习笔记15——ETH状态树
- 实验一:JSP编程范例
- HTML实现领取QQ名片赞,易语言领取QQ名片赞
热门文章
- 【1.skynet网络剖析】
- 11月24号-11月30号
- 网易云音乐外链的真实地址下载方法
- Android — 创建文件及文件夹
- 石油大学计算机第三次在线作业,石油大学管理会计第三次在线作业答案
- 关闭数字健康 android 魅族,数字体验 篇二十八:精雕细刻,只为给魅友更好的选择,魅族16s Pro体验分享...
- 3.8-7.25 partB
- 流浪大师善始者众善终者寡_流浪者–适合每个开发人员的瑞士军刀
- 【云计算课程】Lecture 1 云计算概述
- msgpack-c 官方文档整理翻译之pack