从整数arr里查找连续子数组,使其和为v的整数倍,有则返回true
先求arr的前缀和数组:sum,原问题转化为求以下等式成立的i,j
sum[j]-sum[i]=kv 其中k=0,1,2,...,
这等价于:(sum[j]-sum[i])/v=k
这等价于:sum[i]-sum[j] 整除v
这等价于:sum[i]和sum[j]除以v的余数相等
因此可以把sum中的每个元素都除以v并存进map,key是余数,value是相等key的次数,当value大于等于2则返回true
523 连续子数组和
于 2022-03-20 22:33:30 首次发布