Boundry Traversal of the Matrix

Question – You are given a matrix of dimensions n x m. The task is to perform boundary traversal on the matrix in a clockwise manner.

Example

Given Input: n = 4, m = 4

matrix[][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15,16}}

Expected Output: 1 2 3 4 8 12 16 15 14 13 9 5

Logic

  1. Traverse the top row
  2. Traverse the last column
  3. Traverse the bottom row
  4. Traverse the bottom row

Code

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
static ArrayList<Integer> boundaryTraversal(int matrix[][], int n, int m)
{
// Create a list to store the boundary elements
ArrayList<Integer> list = new ArrayList<>();
// Get the number of rows and columns in the matrix
int rows = matrix.length;
int cols = matrix[0].length;
// Traverse the top row from left to right
for (int i = 0; i < cols; i++) {
list.add(matrix[0][i]);
}
// Traverse the last column from top to bottom
for (int i = 1; i < rows; i++) {
list.add(matrix[i][cols - 1]);
}
// Traverse the bottom row from right to left
if (rows > 1) {
for (int i = cols - 2; i >= 0; i--) {
list.add(matrix[rows - 1][i]);
}
}
// Traverse the first column from bottom to top
if (cols > 1) {
for (int i = rows - 2; i > 0; i--) {
list.add(matrix[i][0]);
}
}
// Return the list containing the boundary elements
return list;
}
static ArrayList<Integer> boundaryTraversal(int matrix[][], int n, int m) { // Create a list to store the boundary elements ArrayList<Integer> list = new ArrayList<>(); // Get the number of rows and columns in the matrix int rows = matrix.length; int cols = matrix[0].length; // Traverse the top row from left to right for (int i = 0; i < cols; i++) { list.add(matrix[0][i]); } // Traverse the last column from top to bottom for (int i = 1; i < rows; i++) { list.add(matrix[i][cols - 1]); } // Traverse the bottom row from right to left if (rows > 1) { for (int i = cols - 2; i >= 0; i--) { list.add(matrix[rows - 1][i]); } } // Traverse the first column from bottom to top if (cols > 1) { for (int i = rows - 2; i > 0; i--) { list.add(matrix[i][0]); } } // Return the list containing the boundary elements return list; }
static ArrayList<Integer> boundaryTraversal(int matrix[][], int n, int m)
{
    // Create a list to store the boundary elements
    ArrayList<Integer> list = new ArrayList<>();

    // Get the number of rows and columns in the matrix
    int rows = matrix.length;
    int cols = matrix[0].length;

    // Traverse the top row from left to right
    for (int i = 0; i < cols; i++) {
        list.add(matrix[0][i]);
    }

    // Traverse the last column from top to bottom
    for (int i = 1; i < rows; i++) {
        list.add(matrix[i][cols - 1]);
    }

    // Traverse the bottom row from right to left
    if (rows > 1) {
        for (int i = cols - 2; i >= 0; i--) {
            list.add(matrix[rows - 1][i]);
        }
    }

    // Traverse the first column from bottom to top 
    if (cols > 1) {
        for (int i = rows - 2; i > 0; i--) {
            list.add(matrix[i][0]);
        }
    }

    // Return the list containing the boundary elements
    return list;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

WhatsApp Icon Join For Job Alerts