Medium
,Array
,Hash Table
,Prefix Sum
974. Subarray Sums Divisible by K
Given an integer array nums
and an integer k
, return the number of non-empty subarrays that have a sum divisible by k
.
A subarray is a contiguous part of an array.
Example 1:
Example 2:
Constraints:
nums.length
<= 3 * 104nums[i]
<= 104k
<= 104
sums
可以用unordered_map<int, int>
來取代vector<int>
Yen-Chi ChenThu, Jan 19, 2023
nums[i:j]
可被k
整除, 利用prefix sum表示為(sum[j]-sum[i-1] % k) == 0
, 或者是說sum[j]-sum[i-1] == k * n
, 左右%k
化簡後變sum[j]%k == sum[i-1]%k
, 故sum[j]%k
出現的次數, 即為array以j
為結束的index時, 合法array會出現的次數prefix sum
及 %k
掃一遍, 累計%k
值出現的次數為答案Time:
Extra Space:
XD Jan 19, 2023
寫完了才看懂樓上的code XDD 理解力薄弱QQ
玉山
本來寫得太醜了,參考吉神的答案,醜陋版跟TLE版本放在Discord給大家笑
Marsgoat Feb 13, 2023