Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fb7da36

Browse files
Feat: Created matrix search function with test cases
1 parent 0315c8a commit fb7da36

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

Search/MatrixSearch.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {T} key - The element to be found.
3+
* @param {T[][]} matrix - The matrix in which the element should be found.
4+
* @template T
5+
* @returns {number[]} - An array containing the first found coordinates of the element.
6+
*/
7+
const MatrixSearch = (key, matrix) => {
8+
for (let i = 0; i < matrix.length; i++) {
9+
for (let j = 0; j < matrix[i].length; j++) {
10+
if (matrix[i][j] === key) return [i, j] // Found the element, return its coordinates
11+
}
12+
}
13+
return [-1, -1] // Element not found in the matrix
14+
}
15+
export { MatrixSearch }

Search/test/MatrixSearch.test.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { MatrixSearch } from '../MatrixSearch' // Import the matrix search function
2+
3+
describe('MatrixSearchAlgorithm', () => {
4+
const searchParam = [
5+
[
6+
5,
7+
[
8+
[1, 2, 3],
9+
[4, 5, 6],
10+
[7, 8, 9]
11+
],
12+
[1, 1]
13+
],
14+
[
15+
5,
16+
[
17+
[1, 2, 3],
18+
[4, 6, 7],
19+
[8, 9, 10]
20+
],
21+
[-1, -1]
22+
],
23+
[42, [[42]], [0, 0]],
24+
[
25+
3,
26+
[
27+
[3, 5, 7],
28+
[2, 4, 6],
29+
[1, 8, 9]
30+
],
31+
[0, 0]
32+
],
33+
[
34+
1,
35+
[
36+
[3, 5, 7],
37+
[2, 4, 6],
38+
[1, 8, 9]
39+
],
40+
[2, 0]
41+
],
42+
[5, [], [-1, -1]]
43+
]
44+
45+
test.each(searchParam)(
46+
'should find the element in the matrix',
47+
(key, matrix, expected) => {
48+
expect(MatrixSearch(key, matrix)).toEqual(expected)
49+
}
50+
)
51+
})

0 commit comments

Comments
 (0)