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);
+  });
+});