From 596ae26adea20299c997da707f7e56002631f58e Mon Sep 17 00:00:00 2001 From: yi-ge Date: Wed, 27 May 2020 06:39:13 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E5=92=8C=E5=8F=AF=E8=A2=ABK=E6=95=B4?= =?UTF-8?q?=E9=99=A4=E7=9A=84=E5=AD=90=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ src/array/subarray-sums-divisible-by-k.js | 17 +++++++++++++++++ {test => src/list}/math/coin-lcci.test.js | 0 .../math/factorial-trailing-zeroes.test.js | 0 {test => src/list}/math/maximum-lcci.test.js | 0 .../math/median-of-two-sorted-arrays.test.js | 0 .../list}/math/palindrome-number.test.js | 0 {test => src/list}/math/perfect-number.test.js | 0 {test => src/list}/math/permutations.test.js | 0 {test => src/list}/math/powx-n.test.js | 0 .../list}/math/subarray-sum-equals-k.test.js | 0 {test => src/list}/math/ugly-number-ii.test.js | 0 test/array/subarray-sums-divisible-by-k.test.js | 5 +++++ 13 files changed, 26 insertions(+) create mode 100644 src/array/subarray-sums-divisible-by-k.js rename {test => src/list}/math/coin-lcci.test.js (100%) rename {test => src/list}/math/factorial-trailing-zeroes.test.js (100%) rename {test => src/list}/math/maximum-lcci.test.js (100%) rename {test => src/list}/math/median-of-two-sorted-arrays.test.js (100%) rename {test => src/list}/math/palindrome-number.test.js (100%) rename {test => src/list}/math/perfect-number.test.js (100%) rename {test => src/list}/math/permutations.test.js (100%) rename {test => src/list}/math/powx-n.test.js (100%) rename {test => src/list}/math/subarray-sum-equals-k.test.js (100%) rename {test => src/list}/math/ugly-number-ii.test.js (100%) create mode 100644 test/array/subarray-sums-divisible-by-k.test.js diff --git a/README.md b/README.md index c0849c3..96258db 100644 --- a/README.md +++ b/README.md @@ -353,6 +353,10 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重 - LeetCode 287. 寻找重复数 - LintCode 633. 寻找重复的数 +- [和可被K整除的子数组](src/array/subarray-sums-divisible-by-k.js) + + - LeetCode 974. 和可被 K 整除的子数组 + ## 栈 - [最大矩阵](src/stack/maximal-rectangle.js) diff --git a/src/array/subarray-sums-divisible-by-k.js b/src/array/subarray-sums-divisible-by-k.js new file mode 100644 index 0000000..1d27434 --- /dev/null +++ b/src/array/subarray-sums-divisible-by-k.js @@ -0,0 +1,17 @@ +/** + * @param {number[]} A + * @param {number} K + * @return {number} + */ +export const subarraysDivByK = function (A, K) { + const map = new Map([[0, 1]]); let sum = 0; let count = 0 + + A.forEach(n => { + sum = (sum + n) % K; sum = sum < 0 ? sum + K : sum + const temp = map.get(sum) || 0 + count += temp + map.set(sum, temp + 1) + }) + + return count +} diff --git a/test/math/coin-lcci.test.js b/src/list/math/coin-lcci.test.js similarity index 100% rename from test/math/coin-lcci.test.js rename to src/list/math/coin-lcci.test.js diff --git a/test/math/factorial-trailing-zeroes.test.js b/src/list/math/factorial-trailing-zeroes.test.js similarity index 100% rename from test/math/factorial-trailing-zeroes.test.js rename to src/list/math/factorial-trailing-zeroes.test.js diff --git a/test/math/maximum-lcci.test.js b/src/list/math/maximum-lcci.test.js similarity index 100% rename from test/math/maximum-lcci.test.js rename to src/list/math/maximum-lcci.test.js diff --git a/test/math/median-of-two-sorted-arrays.test.js b/src/list/math/median-of-two-sorted-arrays.test.js similarity index 100% rename from test/math/median-of-two-sorted-arrays.test.js rename to src/list/math/median-of-two-sorted-arrays.test.js diff --git a/test/math/palindrome-number.test.js b/src/list/math/palindrome-number.test.js similarity index 100% rename from test/math/palindrome-number.test.js rename to src/list/math/palindrome-number.test.js diff --git a/test/math/perfect-number.test.js b/src/list/math/perfect-number.test.js similarity index 100% rename from test/math/perfect-number.test.js rename to src/list/math/perfect-number.test.js diff --git a/test/math/permutations.test.js b/src/list/math/permutations.test.js similarity index 100% rename from test/math/permutations.test.js rename to src/list/math/permutations.test.js diff --git a/test/math/powx-n.test.js b/src/list/math/powx-n.test.js similarity index 100% rename from test/math/powx-n.test.js rename to src/list/math/powx-n.test.js diff --git a/test/math/subarray-sum-equals-k.test.js b/src/list/math/subarray-sum-equals-k.test.js similarity index 100% rename from test/math/subarray-sum-equals-k.test.js rename to src/list/math/subarray-sum-equals-k.test.js diff --git a/test/math/ugly-number-ii.test.js b/src/list/math/ugly-number-ii.test.js similarity index 100% rename from test/math/ugly-number-ii.test.js rename to src/list/math/ugly-number-ii.test.js diff --git a/test/array/subarray-sums-divisible-by-k.test.js b/test/array/subarray-sums-divisible-by-k.test.js new file mode 100644 index 0000000..f67a4b4 --- /dev/null +++ b/test/array/subarray-sums-divisible-by-k.test.js @@ -0,0 +1,5 @@ +import { subarraysDivByK } from '../../src/array/subarray-sums-divisible-by-k' + +test('和可被K整除的子数组', () => { + expect(subarraysDivByK([4, 5, 0, -2, -3, 1], 5)).toBe(7) +})