🚀 𝐂𝐨𝐦𝐩𝐞𝐭𝐢𝐭𝐢𝐯𝐞 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐢𝐧𝐠 |𝐒𝐮𝐛𝐚𝐫𝐫𝐚𝐲 𝐒𝐮𝐦𝐬 𝐃𝐢𝐯𝐢𝐬𝐢𝐛𝐥𝐞 𝐛𝐲 𝐊 | 𝐄𝐟𝐟𝐢𝐜𝐢𝐞𝐧𝐭 𝐏𝐫𝐞𝐟𝐢𝐱 𝐒𝐮𝐦 + 𝐇𝐚𝐬𝐡𝐢𝐧𝐠 𝐚𝐩𝐩𝐫𝐨𝐚𝐜𝐡 📌 𝐏𝐫𝐨𝐛𝐥𝐞𝐦 𝐒𝐭𝐚𝐭𝐞𝐦𝐞𝐧𝐭: Given an integer array nums and an integer k, return the number of non-empty subarrays whose sum is divisible by k. This problem looks tricky at first, but with the right observation, it can be solved in linear time ⚡ 🔍 𝐊𝐞𝐲 𝐎𝐛𝐬𝐞𝐫𝐯𝐚𝐭𝐢𝐨𝐧: If two prefix sums have the same remainder when divided by k, then the subarray between them will have a sum divisible by k. Mathematical Insight: If: prefixSum[i] % k == prefixSum[j] % k Then: (prefixSum[j] - prefixSum[i]) % k == 0 Which means the subarray between i+1 and j is divisible by k. ✅ 𝐎𝐩𝐭𝐢𝐦𝐚𝐥 𝐀𝐩𝐩𝐫𝐨𝐚𝐜𝐡 : 🔹 Prefix Sum + Hashing (Unordered Map) Steps: ✔️ Maintain running prefix sum ✔️ Compute remainder rem = sum % k ✔️ Handle negative remainders carefully ✔️ Store frequency of each remainder in hash map ✔️ If same remainder appears again → add previous frequency to answer ⏱️ Complexity Analysis Time Complexity: O(N) Space Complexity: O(K) (or O(N) in worst case) 💻 Optimal Code Link: https://lnkd.in/gvGn4E_7 ------- I post DSA problems (1x daily) Hit the 🔔 icon → Select “All” to get the link first Follow ( Krupesh Patil ) 💙 Like | ♻️ Repost | 💬 Comment ------- #PrefixSum #Hashing #ModuloArithmetic #SlidingWindow #CompetitiveProgramming #DSA #Cpp #ProblemSolving #Algorithms #Coding #DataStructures #Programmer
The beauty of prefix sum problems is that the brute force solution looks impossible at scale until one mathematical observation turns it into an O(N) approach. Competitive programming really trains you to look for those hidden patterns.
Amazing competitive programming subarray sum divisible by k problem shared amazing Approach and breakdown of problem Krupesh Patil
Amazing subarray CP problem shared
Great Insights thanks for sharing
Competitiveprogramming++
Amazing CP problem shared
Great insight, Krupesh Patil
Amazing share
#DSATech++
Amazing, keep sharing.