From ad30e2740337bac94e5792b8d20e183202607c19 Mon Sep 17 00:00:00 2001 From: Shaked Shlomo Date: Tue, 2 Jun 2026 02:52:31 +0300 Subject: [PATCH] fix: handle empty array in maximumNonAdjacentSum The empty-input guard was 'if (nums.length < 0) return 0', but length is never negative, so it was dead code. For [] the function then read nums[0] (undefined) and returned Math.max(0, undefined) === NaN instead of 0. Change the guard to 'nums.length === 0' and add a test file. --- Dynamic-Programming/MaxNonAdjacentSum.js | 2 +- .../tests/MaxNonAdjacentSum.test.js | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Dynamic-Programming/tests/MaxNonAdjacentSum.test.js diff --git a/Dynamic-Programming/MaxNonAdjacentSum.js b/Dynamic-Programming/MaxNonAdjacentSum.js index 7c04f5f351..296d30ecd7 100644 --- a/Dynamic-Programming/MaxNonAdjacentSum.js +++ b/Dynamic-Programming/MaxNonAdjacentSum.js @@ -5,7 +5,7 @@ function maximumNonAdjacentSum(nums) { * :return: The maximum non-adjacent sum */ - if (nums.length < 0) return 0 + if (nums.length === 0) return 0 let maxIncluding = nums[0] let maxExcluding = 0 diff --git a/Dynamic-Programming/tests/MaxNonAdjacentSum.test.js b/Dynamic-Programming/tests/MaxNonAdjacentSum.test.js new file mode 100644 index 0000000000..67385124ab --- /dev/null +++ b/Dynamic-Programming/tests/MaxNonAdjacentSum.test.js @@ -0,0 +1,21 @@ +import { maximumNonAdjacentSum } from '../MaxNonAdjacentSum' + +describe('maximumNonAdjacentSum', () => { + it('should return 0 for an empty array', () => { + expect(maximumNonAdjacentSum([])).toBe(0) + }) + + it('should return the single element for a one-element array', () => { + expect(maximumNonAdjacentSum([5])).toBe(5) + }) + + it('should compute the maximum non-adjacent sum', () => { + expect(maximumNonAdjacentSum([1, 2, 3])).toBe(4) + expect(maximumNonAdjacentSum([1, 5, 3, 7, 2, 2, 6])).toBe(18) + expect(maximumNonAdjacentSum([499, 500, -3, -7, -2, -2, -6])).toBe(500) + }) + + it('should return 0 when all elements are negative', () => { + expect(maximumNonAdjacentSum([-1, -5, -3, -7, -2, -2, -6])).toBe(0) + }) +})