02.同余性质
一、题目:⭐️⭐️523. 连续的子数组和
二、「同余性质」
在看题解的时候发现了一个非常简便的解法,用到了「同余性质」
想要A-B为k的倍数,只需要a、b模k相同即可
证明
假设 A = xk + a, B = yk + b,A-B为k的倍数
A - B = (xk + a) - (yk + b) = (x+y)k + (a-b) = zk
a-b
也为k的倍数,而a
、b
为A
、B
模k
的值,故两者都在[0,k)区间内所以:a=b
三、使用同余性质解决上面的题目
3.1 转化
连续子数组元素和
转化为求两个下标从0开始连续子数组和的差值
问题。
3.2 分析
元素依次累加,创建一个数组用来存下标和模k的值
得到的值模k
如果map中不存在该值,根据同余性质,也就是不满足A-B为k的倍数,继续查找
如果存在,则说明满足条件,可以return了
3.3 编码
Last updated