📖 Scenario: You are working with a grid-like map that stores numbers in rows and columns. You want to find if a specific number exists in this map.
🎯 Goal: Build a program that searches for a given number in a 2D matrix and tells if it is found or not.
📋 What You'll Learn
Create a 2D array called matrix with exact values
Create a variable called target with the number to search
Use nested for loops with variables i and j to search the matrix
Print "Found" if target is in matrix, otherwise print "Not Found"
💡 Why This Matters
🌍 Real World
Searching in a 2D matrix is like looking for a seat in a theater or a book in a shelf arranged in rows and columns.
💼 Career
Understanding how to search in 2D data structures is important for jobs involving data analysis, game development, and software engineering.
Progress0 / 4 steps
1
Create the 2D matrix
Create a 2D array called matrix with these exact rows: [1, 3, 5], [7, 9, 11], [13, 15, 17]
DSA Javascript
Hint
Use square brackets to create arrays inside an array.
2
Set the target number to search
Create a variable called target and set it to 9
DSA Javascript
Hint
Use const to create the variable and assign the number 9.
3
Search for the target in the matrix
Use nested for loops with variables i and j to check each element in matrix. Create a variable called found set to false before the loops. If matrix[i][j] equals target, set found to true and break both loops.
DSA Javascript
Hint
Use two loops: outer for rows (i), inner for columns (j). Use break to stop loops when found.
4
Print the search result
Print "Found" if found is true, otherwise print "Not Found"
DSA Javascript
Hint
Use console.log to print the result based on the found variable.
Practice
(1/5)
1. What is the main idea behind searching a target value in a 2D matrix where each row and column is sorted in ascending order?
easy
A. Use binary search on each row independently
B. Start from bottom-left corner and move right or down based on comparison
C. Search each element one by one from top-left to bottom-right
D. Start from top-right corner and move left or down based on comparison
Solution
Step 1: Understand matrix properties
Each row and column is sorted ascending, so top-right element is a good start to decide direction.
Step 2: Use top-right corner to guide search
If target is less than current element, move left; if greater, move down.
Final Answer:
Start from top-right corner and move left or down based on comparison -> Option D
Quick Check:
Top-right start = efficient search [OK]
Hint: Start at top-right to decide move direction quickly [OK]
Common Mistakes:
Searching all elements one by one wastes time
Starting from bottom-left without clear logic
Using binary search on each row ignores column sorting
2. Which of the following is the correct syntax to check if a target exists in a 2D matrix named matrix in JavaScript?
easy
A. for(let i=0; i
B. for(let i=0; i
C. for(let i=0; i
D. for(let i=0; i
Solution
Step 1: Identify correct loop ranges
Outer loop runs over rows (matrix.length), inner loop over columns (matrix[0].length).
Step 2: Check element equality with strict equality
Use === for exact match and return true if found.
Final Answer:
for(let i=0; i -> Option B
Quick Check:
Correct loop ranges and strict equality [OK]
Hint: Outer loop rows, inner loop columns, use === for comparison [OK]
Common Mistakes:
Swapping row and column lengths in loops
Using == instead of === causing type coercion
Looping inner loop with wrong length causing errors
3. What will be the output of the following code snippet?
Initial position is matrix[0][3] = 11, compare with target 5.
Step 2: Move left since 11 > 5, now at matrix[0][2] = 7
7 > 5, move left again to matrix[0][1] = 4.
Step 3: 4 < 5, move down to matrix[1][1] = 5
Found target 5, return true.
Final Answer:
true -> Option C
Quick Check:
Top-right search finds 5 = true [OK]
Hint: Move left if bigger, down if smaller from top-right [OK]
Common Mistakes:
Starting from wrong corner causing wrong moves
Not updating row or column correctly
Returning false too early without full search
4. Find the bug in the following code that searches for a target in a 2D matrix where rows and columns are sorted.
function searchMatrix(matrix, target) {
let row = matrix.length - 1;
let col = 0;
while(row >= 0 && col < matrix[0].length) {
if(matrix[row][col] === target) return true;
else if(matrix[row][col] < target) row--;
else col++;
}
return false;
}
medium
A. The directions to move row and col are swapped in conditions
B. The initial row and col values are incorrect
C. The while loop condition should use '||' instead of '&&'
D. The function should return false inside the loop
Solution
Step 1: Analyze movement logic
Starting at bottom-left, if current < target, should move right (col++), else move up (row--).
Step 2: Check conditions in code
Code moves row-- when current < target, which is wrong; it should move col++ instead.
Final Answer:
The directions to move row and col are swapped in conditions -> Option A
Quick Check:
Correct move directions fix search [OK]
Hint: From bottom-left, move right if smaller, up if bigger [OK]
Common Mistakes:
Swapping row and column moves
Wrong initial position for search
Incorrect loop condition causing infinite loop
5. Given a 2D matrix where each row and column is sorted ascending, write a function to count how many times a target appears in the matrix efficiently. Which approach is best?
hard
A. Start from top-right and move left/down counting matches (O(m+n))
B. Traverse entire matrix counting matches (O(m*n))
C. Use binary search on each row and sum counts (O(m*log n))
D. Flatten matrix to 1D array and use binary search once (O(m*n))
Solution
Step 1: Understand time complexities
Full traversal is slow (O(m*n)), binary search per row is better but still costly.
Step 2: Use top-right start to count efficiently
Moving left/down lets you skip rows or columns, counting matches in O(m+n) time.
Final Answer:
Start from top-right and move left/down counting matches (O(m+n)) -> Option A
Quick Check:
Top-right traversal counts efficiently [OK]
Hint: Top-right start counts matches in linear time [OK]
Common Mistakes:
Using full traversal wasting time
Flattening matrix losing sorted structure
Binary search per row misses column info
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.