From 64d005e82a24d76129f94710f9e70bde1d0330a5 Mon Sep 17 00:00:00 2001 From: muskan dubey <muskandubey184@gmail.com> Date: Thu, 16 Jan 2025 21:22:56 +0530 Subject: [PATCH] Added Kadane's Algorithm implementation and test cases --- package-lock.json | 3 ++- package.json | 2 +- src/algorithms/kadane-algorithm.js | 17 +++++++++++++++++ src/tests/kadane-algorithm.test.js | 12 ++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/algorithms/kadane-algorithm.js create mode 100644 src/tests/kadane-algorithm.test.js diff --git a/package-lock.json b/package-lock.json index b61d279d87..889b91e868 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "eslint-plugin-jest": "27.2.1", "eslint-plugin-jsx-a11y": "6.7.1", "husky": "8.0.3", - "jest": "29.4.1", + "jest": "^29.4.1", "pngjs": "^7.0.0" }, "engines": { @@ -5689,6 +5689,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.1.tgz", "integrity": "sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.4.1", "@jest/types": "^29.4.1", diff --git a/package.json b/package.json index 95d6d28942..6f1db78c36 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "eslint-plugin-jest": "27.2.1", "eslint-plugin-jsx-a11y": "6.7.1", "husky": "8.0.3", - "jest": "29.4.1", + "jest": "^29.4.1", "pngjs": "^7.0.0" }, "engines": { diff --git a/src/algorithms/kadane-algorithm.js b/src/algorithms/kadane-algorithm.js new file mode 100644 index 0000000000..734396d31a --- /dev/null +++ b/src/algorithms/kadane-algorithm.js @@ -0,0 +1,17 @@ +function kadaneAlgorithm(arr) { + let sum = 0; + let maxi = 0; + + for (let i = 0; i < arr.length; i++) { + sum += arr[i]; + maxi = Math.max(sum, maxi); + + if (sum < 0) { + sum = 0; + } + } + + return maxi; +} + +module.exports = kadaneAlgorithm; diff --git a/src/tests/kadane-algorithm.test.js b/src/tests/kadane-algorithm.test.js new file mode 100644 index 0000000000..cd21c66235 --- /dev/null +++ b/src/tests/kadane-algorithm.test.js @@ -0,0 +1,12 @@ +const kadaneAlgorithm = require('C:/Users/Muskan/Documents/javascript-algorithms/src/algorithms/kadane-algorithm.js'); + +describe("Kadane's Algorithm", () => { + it('should return the maximum subarray sum', () => { + const result = kadaneAlgorithm([1, -2, 3, -1, 2, 1, -5, 4]); + console.log(result); + expect(kadaneAlgorithm([1, -2, 3, -1, 2, 1, -5, 4])).toBe(5); + expect(kadaneAlgorithm([-2, 1, -3, 4, -1, 2, 1, -5, 4])).toBe(6); + expect(kadaneAlgorithm([1, 2, 3, 4, 5])).toBe(15); + expect(kadaneAlgorithm([-1, -2, -3, -4])).toBe(0); + }); +});