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

算法31.0

974. 和可被 K 整除的子数组 - 力扣(LeetCode)


自己的理解:

暴力解法:枚举所有+判断

不能用滑动窗口是因为  这里的数字存在负数和零


细节:

算法30.0的细节问题

getOrDefault(r,0)  用于从map中获取指定键对应的值 如果键不存在则返回默认值


别人的讲解:

两个前置知识:  

同余定理  (如果两个数的差值)取余一个整数是0  那么这两个数各自取余这个整数是相等的

公式是(a-b)% c  = 0    可以推断 a%c  =  b % c

Java和c++中负数%正数的结果以及修正

负数 % 正数 = 负数  

如果要修正负数为正数  修正方案是( a % p + p )% p

优化暴力解法:

问题转化为了在0 到 i-1区间内 找到有多少个前缀和的余数等于sum%k(可能是负数 需要修正)

所以问题转化为了在0到i-1区间内 找到有多少个前缀和的余数等于(sum % k + k)% k

算法30.0的启示    

哈希表<int , int>  第一个int为前缀和的余数  第二个为次数 


下面是题目、效果图和代码:

class Solution 
{public int subarraysDivByK(int[] nums, int k) {Map<Integer,Integer> hash = new HashMap<Integer,Integer>();hash.put(0%k,1) ; //哈希表里面其实存的是前缀和的余数  int sum = 0,ret = 0;for(int x:nums) {sum += x;//计算当前位置的前缀和int r = (sum % k + k) % k;//注意修正ret += hash.getOrDefault(r,0);//统计结果hash.put(r,hash.getOrDefault(r,0)+1);}return ret;}
}
//xiyu251110&1#4*6
http://www.dtcms.com/a/592682.html

相关文章:

  • 微信小程序端服务器接口:全部服务以及实战
  • C++11实用的“新特性”:列表初始化+右值引用与偷懒艺术——移动语义
  • CE(Chrony服务器)
  • 专门做游轮的网站聊城哪里做网站
  • STM32 几种烧录方式
  • 有哪些数据结构?
  • 7层/4层模型讲解
  • 5种主流的API架构风格
  • MAC 安装openJDK8
  • Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
  • ⚡️2025-11-10GitHub日榜Top5|AI黑客漏洞发现工具
  • 傅里叶变换五大主要特性介绍
  • 计算机网络10
  • C++基于websocket的多用户网页五子棋 --- 项目设计
  • 牛客周赛 Round 117 ABCDE 题解
  • 1.1.3 Program_Alarm的使用
  • C++pair学习笔记
  • 泉州网站建设平台项目计划书怎么做
  • Matplotlib Pyplot各种函数对比详解以及隐式显式对比详解
  • SQL,CROSS JOIN速度优化
  • 企业网站实名认证时间设计有关的网站
  • [免费]基于Python的农产品可视化系统(Django+echarts)【论文+源码+SQL脚本】
  • 【题解】P2472 [SCOI2007] 蜥蜴 [网络流]
  • RV1126 NO.47:RV1126+OPENCV对视频流进行视频腐蚀操作
  • 消息称苹果 iPhone 17 系列国内激活销量超 825 万
  • 狠狠做网站 百度一下做家政服务网站
  • 企业网站 php定制软件开发公司
  • SAP-ABAP:SAP 系统与外部服务的 HTTP 通信cl_http_client 的深度解析与应用实践
  • COC Asia 2025|得帆云 ETL:顺应 Hive 新特性,重塑数据管道的未来
  • 深度学习:基于YOLOv8模型的海洋生物目标检测系统 深度学习 pytorch 计算机 PySide6界面✅