Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions Data-Structures/Array/LeadersInArray.js.test
Original file line number Diff line number Diff line change
@@ -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]);
});
});
16 changes: 16 additions & 0 deletions Data-Structures/Array/leadersinarray.js
Original file line number Diff line number Diff line change
@@ -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;
}
23 changes: 23 additions & 0 deletions Data-Structures/Array/test/CheckArraySortedOrNot.js.test
Original file line number Diff line number Diff line change
@@ -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);
});
});
10 changes: 10 additions & 0 deletions Data-Structures/Array/test/checkarraysortedornot.js
Original file line number Diff line number Diff line change
@@ -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;
}
Loading