diff --git a/Data-Structures/Array/LeadersInArray.js.test b/Data-Structures/Array/LeadersInArray.js.test new file mode 100644 index 0000000000..7ec937aa8a --- /dev/null +++ b/Data-Structures/Array/LeadersInArray.js.test @@ -0,0 +1,23 @@ +import { leaders } from '../leadersinarray.js'; + +describe('leaders()', () => { + test('should return correct leaders for given array', () => { + expect(leaders([16, 17, 4, 3, 5, 2])).toEqual([17, 5, 2]); + }); + + test('should handle a single element array', () => { + expect(leaders([10])).toEqual([10]); + }); + + test('should handle already decreasing array', () => { + expect(leaders([10, 9, 8, 7])).toEqual([10, 9, 8, 7]); + }); + + test('should handle increasing array', () => { + expect(leaders([1, 2, 3, 4])).toEqual([4]); + }); + + test('should handle array with duplicates', () => { + expect(leaders([5, 5, 5, 5])).toEqual([5, 5, 5, 5]); + }); +}); diff --git a/Data-Structures/Array/leadersinarray.js b/Data-Structures/Array/leadersinarray.js new file mode 100644 index 0000000000..2f27dd8928 --- /dev/null +++ b/Data-Structures/Array/leadersinarray.js @@ -0,0 +1,16 @@ +export function leaders(arr) { + const result = []; + const n = arr.length; + let maxRight = arr[n - 1]; + result.push(maxRight); + + for (let i = n - 2; i >= 0; i--) { + if (arr[i] >= maxRight) { + maxRight = arr[i]; + result.push(maxRight); + } + } + + result.reverse(); + return result; +} diff --git a/Data-Structures/Array/test/CheckArraySortedOrNot.js.test b/Data-Structures/Array/test/CheckArraySortedOrNot.js.test new file mode 100644 index 0000000000..28fed379c1 --- /dev/null +++ b/Data-Structures/Array/test/CheckArraySortedOrNot.js.test @@ -0,0 +1,23 @@ +import { isSorted } from '../checkarraysortedornot.js'; + +describe('isSorted()', () => { + test('should return true for sorted array', () => { + expect(isSorted([10, 20, 30, 40, 50])).toBe(true); + }); + + test('should return false for unsorted array', () => { + expect(isSorted([10, 50, 30, 20])).toBe(false); + }); + + test('should return true for array with equal elements', () => { + expect(isSorted([5, 5, 5, 5])).toBe(true); + }); + + test('should return true for single element array', () => { + expect(isSorted([100])).toBe(true); + }); + + test('should return true for empty array', () => { + expect(isSorted([])).toBe(true); + }); +}); diff --git a/Data-Structures/Array/test/checkarraysortedornot.js b/Data-Structures/Array/test/checkarraysortedornot.js new file mode 100644 index 0000000000..deb62326d7 --- /dev/null +++ b/Data-Structures/Array/test/checkarraysortedornot.js @@ -0,0 +1,10 @@ +export function isSorted(arr) { + const n = arr.length; + + for (let i = 1; i < n; i++) { + if (arr[i - 1] > arr[i]) { + return false; + } + } + return true; +}