LeetCode——974.和可被K整除的子数组
这几天力扣总算是放我这个菜鸡一马,来了一些中等难度题。和可被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整除的子数组相关推荐
- ⭐算法入门⭐《前缀和》中等02 —— LeetCode 974. 和可被 K 整除的子数组
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 1)初始化前缀和 2)哈希表统计 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题 ...
- leetcode *974. 和可被 K 整除的子数组(2020.5.27)
[题目]*974. 和可被 K 整除的子数组 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输 ...
- leetcode 974. 和可被 K 整除的子数组(C++)
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其元素之和 ...
- 974. 和可被 K 整除的子数组
974. 和可被 K 整除的子数组 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解 ...
- LeetCode 刷题系列(前缀和题目)之 974. 和可被 K 整除的子数组
题目: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续.非空) 子数组 的数目. 子数组 是数组的 连续 部分. 示例 1: 输入:nums = [4,5,0,- ...
- Leetcode学习笔记(974. 和可被 K 整除的子数组)
前缀和,注意c++取模被除数为负数情况,要进行调整: class Solution {public:int subarraysDivByK(vector<int>& A, int ...
- Leetcode 974. 和可被 K 整除的子数组 前缀和
原题链接:Leetcode 974. 和可被 K 整除的子数组 class Solution {public:int subarraysDivByK(vector<int>& nu ...
- 【算法】leetcode 974. 和可被 K 整除的子数组(前缀和思想)
前言 前缀和相关: leetcode 974. 和可被 K 整除的子数组(前缀和思想) leetcode 560. 和为K的子数组(前缀和思想II) 问题来源 974. 和可被 K 整除的子数组 给定 ...
- LeetCode 974. 和可被 K 整除的子数组 | Python
974. 和可被 K 整除的子数组 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/subarray-sums-divisible-by-k 题目 ...
最新文章
- 让div margin属性消失_margin 和 padding
- 64 oracle client,64bit oracle and oracle client.
- 链接oracle 无监听程序,连接ORACLE 无监听程序
- JAVA源码优化、分析工具
- Oracle创建带有自增序列的表和字符串转日期的问题
- 《计算机科学概论(第12版)》—第0章0.3节学习大纲
- 计算机中 位数越多 能表示的状态,第2章 基本数据的表示与处理.ppt
- The constness of a method should makes sense from outside the object
- C# Json文件读取
- 程序员如何保护自己?
- 思科交换机配置链路聚合
- JAVA中数组和集合的区别
- endnote如何设置文献样式
- python3刷火车票_Python3实现抢火车票功能(上)
- 【转】新世纪研究生公共英语教材阅读A 答案
- WebDriver中页面滚动(scrolling)
- 小米、华为、智汀家庭云:让你实现不同设备之间的互联互通?
- 反爬虫爬取网易云歌单
- 学习日志13:360安全浏览器远程代码执行漏洞
- RocketMq客户端日志参数设置