diff --git a/package-lock.json b/package-lock.json index b61d279d8..889b91e86 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 95d6d2894..6f1db78c3 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 000000000..734396d31 --- /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 000000000..cd21c6623 --- /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); + }); +});