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

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)
链接:https://leetcode-cn.com/problems/subarray-sums-divisible-by-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

先贴一个暴力解

class Solution {public:int subarraysDivByK(vector<int>& A, int K) {int res=0;int s=A.size();int i,j,sum;for(i=0;i<s;i++){sum=0;for(j=i;j<s;j++){sum+=A[j];if(sum%K==0){res++;}}}return res;}
};

一看题目数据量,暴力解是无法满足时间要求的。OK,接下来进行优化,前缀和出场。
对于A的子数组,[i…j](下标),设数组前缀和P[j]为数组中j之前(包括j)的所有元素的和。子数组要满足和能被K整除,则P[j]-P[i-1]要能被K整除,则P[j]和P[i-1]对K求模的值相同,即同余定理,简单证明非常容易,此处不在详述。因此利用哈希表记录前缀和对K求余的键值,遍历时,检查对应求余的键值是否为0,若否,则存在满足条件的子数组。

class Solution {public:/*哈希表,前缀和*/unordered_map<int,int> book;int subarraysDivByK(vector<int>& A, int K){int res=0,sum=0;int mod;book[0]=1;for(auto& x:A){sum+=x;mod=(sum%K+K)%K;if(book.count(mod)!=0){res+=book[mod];}book[mod]++;}return res;}
};

LeetCode——974.和可被K整除的子数组相关推荐

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

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

  2. leetcode *974. 和可被 K 整除的子数组(2020.5.27)

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

  3. leetcode 974. 和可被 K 整除的子数组(C++)

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

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

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

  5. LeetCode 刷题系列(前缀和题目)之 974. 和可被 K 整除的子数组

    题目: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续.非空) 子数组 的数目. 子数组 是数组的 连续 部分. 示例 1: 输入:nums = [4,5,0,- ...

  6. Leetcode学习笔记(974. 和可被 K 整除的子数组)

    前缀和,注意c++取模被除数为负数情况,要进行调整: class Solution {public:int subarraysDivByK(vector<int>& A, int ...

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

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

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

    前言 前缀和相关: leetcode 974. 和可被 K 整除的子数组(前缀和思想) leetcode 560. 和为K的子数组(前缀和思想II) 问题来源 974. 和可被 K 整除的子数组 给定 ...

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

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

最新文章

  1. 让div margin属性消失_margin 和 padding
  2. 64 oracle client,64bit oracle and oracle client.
  3. 链接oracle 无监听程序,连接ORACLE 无监听程序
  4. JAVA源码优化、分析工具
  5. Oracle创建带有自增序列的表和字符串转日期的问题
  6. 《计算机科学概论(第12版)》—第0章0.3节学习大纲
  7. 计算机中 位数越多 能表示的状态,第2章 基本数据的表示与处理.ppt
  8. The constness of a method should makes sense from outside the object
  9. C# Json文件读取
  10. 程序员如何保护自己?
  11. 思科交换机配置链路聚合
  12. JAVA中数组和集合的区别
  13. endnote如何设置文献样式
  14. python3刷火车票_Python3实现抢火车票功能(上)
  15. 【转】新世纪研究生公共英语教材阅读A 答案
  16. WebDriver中页面滚动(scrolling)
  17. 小米、华为、智汀家庭云:让你实现不同设备之间的互联互通?
  18. 反爬虫爬取网易云歌单
  19. 学习日志13:360安全浏览器远程代码执行漏洞
  20. RocketMq客户端日志参数设置

热门文章

  1. 工具推荐 | 分析大数据最需要的Top 10数据挖掘工具
  2. 概率论-4.3随机变量序列的两种收敛性(待补充)
  3. 家庭观念算老几?(转)
  4. 5.询问姓名及电话号码
  5. Succi - 用python做皇帝的棋盘
  6. DAO是什么?——为什么有人试图购买美国宪法?
  7. 制作补丁与打补丁简单原理
  8. 七夕送女朋友什么礼物好?不会送礼的男生速看!
  9. GAN原理及Pytorch框架实现GAN(比较容易理解)
  10. linux命令里的xz是干嘛的,xz命令 - Linux命令大全 | linux教程