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

[算法--前缀和] 和可以被K整除的子数组

目录

    • 1. 要在暴力求解的思路上进行优化.
    • 2. 我们该对暴力求解各种子数组情况如何分类?
    • 3. 求解思路是: 前缀和 + 哈希表
    • 4. **(b - a) % k == 0** -> 条件转换为 b % k == a % k(同余定理)
    • 5. 哈希表的特性 与 CPP %号的特性
    • 6. 强制修正可能的负号模运算结果: r = (sum % k + k) % k
    • 7. 哈希表存什么?
    • 8. 有没有可能余数是0?

接下来我们分享一下题目 -> 和可被K整除的子数组

  好的, 我们直接开门见山, 最简单(我说思路上最简单, 效率可是最不"简单"的)的方法是暴力求解, 我相信大家都会操作, 这里也不再多说了~

1. 要在暴力求解的思路上进行优化.

  这里选择的方式就是前缀和方法了, 至于怎么想到前缀和的? 因为有好几道类似的题目都是用前缀和进行优化效率的, 算是一种经验吧~

2. 我们该对暴力求解各种子数组情况如何分类?

  所谓的"优化", 提升效率, 说白了就是少让计算机干活. 对于我们这道题来说就是让计算机直接避免掉一些一定不是最终结果的存在!

我们把以i位置为结尾的所有子数组看成一组, 这样的话方便进行操作~

3. 求解思路是: 前缀和 + 哈希表

我们以i位置为结尾的子数组抽象出下面模型来:
在这里插入图片描述
  设i为数组中的任意位置, 用sum[i]标识[0, i]区间内所有元素的和.
  想要知道有多少个以i位置为结尾的可以被k整除的子数组, 就需要找到多少个[0, x]的子数组之和等于sum[i], 说白了就是一种转换.
  然而, 仅仅这样还不够, 因为我们暴力求解的效率是O(NN), 而这样一个一个去找[0, x]数组哪个之和为sum[i]的话时间复杂度也是O(NN), 所以还需要借助哈希表!
为了方便描述, 我们假设[0, x]之和为a, [x+1, i]数组之和为b, 那么我们可以得到假如说这是一个([x+1, i]数组)可以被k整除的话, 那么就满足: (b - a) % k == 0.
  但是我们有个问题: 我们如何把"(b - a) % k == 0"转换为哈希表上去呢??? 如果是这样的话, 我们就不得不挨个试[0, ?]数组之和满足(b - a) % k == 0, 所以效率还是O(N * N)!

4. (b - a) % k == 0 -> 条件转换为 b % k == a % k(同余定理)

有个定理, 说如果 (b - a) % k == 0 ->b % k == a % k(同余定理).

具体证明如下:
原式左边: (a - b) ÷ p = k … 0
⇒ a - b = k * p (两边同时乘k)
⇒ a = b + k * p (b移项)
⇒ a % p = (b +

相关文章:

  • 软考高级【网络规划设计师】 综合知识
  • 使用Python开发PDF文本提取工具
  • 安装vm和centOS
  • Java进阶学习笔记23——API概述
  • Docker打包Python项目
  • Vue 中动态实现进度条
  • PV Elite 27是专业的压力容器和热交换器设计解决方案
  • 数据分析——Pandas 中的 apply() 函数
  • MySQL 中的事务隔离级别有哪些?MySQL 默认的事务隔离级别是什么?为什么选择这个级别?数据库的脏读、不可重复读和幻读分别是什么?
  • 【System Verilog and UVM基础入门26】Verdi使用教程指南
  • Linux常用命令汇总
  • 电子科技大学考研复习经验分享
  • 微信小程序源码逆向 MacOS
  • [H滑动窗口] lc239. 滑动窗口最大值(模拟+数据结构+单调队列+滑动窗口模板题)
  • 猿大师播放器:交通水利、公安消防Web端Vue网页播放20路RTSP H.265 1080P监控视频流
  • 排序模板——C++
  • 互联网+房产中介+装修设计+物料市场+智能家居一体化平台需求书
  • 【Linux探索学习】第三十一弹——线程互斥与同步(下):深入理解确保线程安全的机制
  • Docker 部署 Graylog 日志管理系统
  • uniapp写的h5跳转小程序
  • 手机友好型网站/网络推广公司运营
  • WordPress会员中心模板/临沂网站seo
  • 网站建设公司是干嘛的/一键建站
  • 网页画图工具/汕头seo优化培训
  • 辽宁工程建设信息网诚信库怎么填/seo搜索铺文章
  • 公司网站介绍模板 html/青海seo技术培训