当前位置: 首页 > news >正文

制作自己的网站教程上海一网通办

制作自己的网站教程,上海一网通办,商标注册网址官方,网站换主机换域名题目: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续、非空) 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1: 输入:nums [4,5,0,-2,-3,1], k 5 输出:7 …

题目:

给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续、非空) 子数组 的数目。

子数组 是数组的 连续 部分。

示例 1:

输入:nums = [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]

示例 2:

输入: nums = [5], k = 9
输出: 0

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • 2 <= k <= 104

算法原理:

本题所需前置知识:

1 同余定理

如果 (a - b) % n == 0 ,那么可以得到⼀个结论: a % n == b % n 。即如果两个数相减的差能被n整除,那么这两个数对n取模的结果相同

如  (26 - 2) % 12 == 0 那么 26 % 12 == 2 % 12 == 2
 

2 c++ 中负数取模结果的修正:
 

c++ 中关于负数的取模运算,结果是「把负数当成正数,取模之后的结果加上⼀个负号」

如 -1 % 3 = -(1 % 3) = -1

由于余数在接下来的代码中会充当下标,所以余数不能为负数,故而有修正余数的情况:

(a % n + n) % n  

若是a%n的结果为负数,那么+n就会是正数,当然若是a%n的结果本身就是正数,那么+n就改变了,故而%n

当a%n的结果为负数,修正后依然比n小,故而%n不会发生改变

当a%n的结果为正数,无需修正,但+n使得结果变了,又%n,让变了的结果变回原样

 

枚举所有子数组可以每次固定一个起始位置向后枚举,我们当然也可以每次固定一个结尾位置向前枚举

i是任意位置,那么以 i 为结尾的和可被k 整除的子数组个数就可以这么求:

由图示,我们知道要求[0,i]区间内绿线的个数,只要知道红线的个数即前缀和为x的个数就可以了,又sum%k==x%k

那么我们只需要知道在[0,i-1]内,前缀和(即x)%k==sum%k的个数即可

hash表统计前缀和%k的余数出现的次数

细节问题:hash[0] = 1 ,当i位置的前缀和本身sum就是能被k整除的,[0,i]区间本身就是一个合法子数组,那么x=0

代码实现:

class Solution 
{
public:int subarraysDivByK(vector<int>& nums, int k) {unordered_map<int,int> hash;hash[0] = 1;//0这个数(这个前缀和)的余数,也可以写成hash[0%k]=1int ret = 0;int sum = 0;for(auto e:nums){sum+=e;//当前位置的前缀和int r = (sum%k+k)%k;//修正后的余数if(hash.count(r)){ret+=hash[r];}hash[r]++;}return ret;}
};

http://www.15wanjia.com/news/192432.html

相关文章:

  • 企业手机网站建设策划方案淄博晨曦网站建设
  • 网站建设好了怎么在百度可以搜到梅江区住房和城乡建设局官方网站
  • 畜牧业网站建设广东网站制作平台
  • 在试用网站做推广企业做网站哪家网站好
  • 织梦首饰网站模板网站 公司 备案
  • 睢宁县凌城做网站的企业官方网站建设运营方案
  • 常熟网站建设icp备案湖南住建云网站
  • 乡村旅游电子商务网站建设网站制作 优帮云
  • 营销型网站建设的注意事项做网站先做首页
  • 家装效果图设计网站好的优化网站推广公司
  • 北京网站建设降龙桂阳县网站建设公司哪家好
  • 济南市历下区建设局官方网站校园网建设网站特色
  • 化妆品的网站布局设计图片大全WordPress安装两个seo插件
  • 定制型营销网站建设wordpress调用列表
  • wordpress 报名系统seo案例
  • 佛山微网站价格wordpress yusi主题
  • 中国建设集团门户网站手机网站免费生成app
  • 从江网站建设wordpress 微信 抓取
  • wordpress后台密码忘记无锡百度seo优化
  • 网站建立初步教案网站开发顶岗周记
  • 陕西建设厅网站怎么选择大连网站建设
  • wordpress视频网站主题国外免费源码网站
  • 网站后台系统是用什么做的做搜狗pc网站软件
  • 德阳建设网站怎么判断一个网站是否使用帝国做的
  • 如东网站建设哪家好郑州做网站开发销售
  • 微商网站制作外网服装设计网站
  • 哪些网站可以下载视频公司网站建设深圳
  • 房产网站开发用什么语言好网站开发是否属于无形资产
  • 山东省无障碍网站建设标准新媒体运营师考试报名官网
  • 怎么做公司的官方网站网络公司如何建网站