leetcode 974. Subarray Sums Divisible by K的解法(统计共同余数)
题目大意:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目
大致思路:比如数组A = [1,2,1], K=2,那么1%2 =1,(1+2)%2=1,所以 {2}是符合条件的子数组,而{1}和{1,2}的特点是有共同的余数1。类似的{}和{1,2,1}有共同的余数0,所以{1,2,1}是满足条件的数组。
详细思路:
(1)统计0到A.size()累计和的余数;
(2)统计相同余数的数量;
(3)相同余数的数量累加;
补充,由于题目A为整数,那么要处理负数的情况,负数的余数是A[i]%K+K。
代码如下:
class Solution {
public:int subarraysDivByK(vector<int>& a, int k) {int as =a.size();vector<int> remain(as+1,0);int sum=0;for(int i=0;i<as;i++){sum+=a[i];//statistac for remainerremain[i]=(sum%k+k)%k;//+k for neg}vector<int> stat(k,0);int ret=0;for(int i=0;i<=as;i++){ret+=stat[remain[i]];//get same remainer countsstat[remain[i]]++;}return ret;}
};
leetcode 974. Subarray Sums Divisible by K的解法(统计共同余数)相关推荐
- leetcode 974 Subarray Sums Divisible by K
leetcode 974 Subarray Sums Divisible by K 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除 ...
- leetcode 974. Subarray Sums Divisible by K
974. Subarray Sums Divisible by K 题意:给你一个数组A和一个数K,求改数组有多少连续子序列的和能被K整除. 思路:简单DP.假设sum[i]表示[0-i]的求和,那么 ...
- LeetCode 974. Subarray Sums Divisible by K--Python解法--数学题--取模求余
LeetCode 974. Subarray Sums Divisible by K–Python解法–数学题–取模求余 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结 ...
- 【leetcode】974. Subarray Sums Divisible by K
题目如下: Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have ...
- LeetCode:974. Subarray Sums Divisible by K - Python
974. 和可被 K 整除的子数组 问题描述: 给定一个整数数组 A,返回其中元素之和可被K整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出 ...
- 974. Subarray Sums Divisible by K
Title 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满 ...
- 974. Subarray Sums Divisible by K [Medium]
用了prefix sum的思想,之前没用过,感觉很难 /*** Runtime: 18 ms, faster than 56.05%* Memory Usage: 42.9 MB, less than ...
- Leetcode 1015. Smallest Integer Divisible by K
思路显然是暴力枚举. 但是两个问题: 1.当1的位数非常大时,模运算很费时间,会超时. 其实每次不用完全用'11111...'来%K,上一次的余数*10+1后再%K就行. 证明: 令f(n)=1111 ...
- ⭐算法入门⭐《前缀和》中等02 —— LeetCode 974. 和可被 K 整除的子数组
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 1)初始化前缀和 2)哈希表统计 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题 ...
最新文章
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
- F#探险之旅(三):命令式编程(上)
- rdp协议打开 windows_RDPY - Twisted Python 实现的RDP协议(Windows 远程桌面)
- Python之第一个helloworld的代码
- 计算机视觉研究群体及专家主页汇总
- linux kernel的virtual kernel memory layout介绍(aarch64)
- php 设置断点,PHP xdebug安装配置(支持断点调试)
- .net core 并发下的线程安全问题
- Harris角点检测+sift描述匹配
- NOIP2000提高组复赛C 单词接龙
- 前端学习(1658):前端系列实战课程之图片延迟加载思路
- idea 利用vue.js插件创建vue初始化项目
- 全面介绍Windows内存管理机制及C++内存分配实例(二):内存状态查询
- Struts2中带参数的结果集
- 使用mysqldump进行逻辑备份
- vue 如何清除浏览器的内存_浏览器垃圾回收机制与 Vue 项目内存泄漏场景分析
- MATLAB模糊控制器
- 如何巧妙将流量转化为销量?
- Android 根据逗号分隔String
- Generality
热门文章
- 数据结构与算法分析----八大排序(暂时缺少堆排序)
- echarts折线图实现滑动平移,横坐标过多时隐藏部分横坐标,通过滑动平移显示隐藏的部分
- 最新android系统下载,安卓6.0抢先体验方法|安卓6.0下载 安卓6.0系统下载地址_PC6教学...
- 夏敏捷的24部著作(2019年)
- 11月21至28号总结
- 【转载】C++ pair的基本用法总结(整理)
- POLARDB:向着更快、更高、更强不断前行!
- C++描述 LeetCode 485. 最大连续1的个数
- AWS CloudFormation
- 易鑫集团上半年经调整净利润1.23亿元 同比下降53%