DEV Community

Shreyas R
Shreyas R

Posted on

"An alternative spiral matrix traversal using list.size() for dynamic termination, eliminating boundary variables:Innovative"

class Solution {
public List spiralOrder(int[][] matrix) {
if (matrix == null || matrix.length == 0) return new ArrayList<>();
int m=matrix.length;
int n=matrix[0].length;
int totalelements=m*n;
List list = new ArrayList<>();

   for(int layer=0;layer <totalelements;layer++){
        int row=layer;
        int col=matrix[0].length-1-layer;
        for(int j=layer; list.size()<totalelements && j<n-layer ;j++){
            list.add(matrix[row][j]);
        }
        for(int i=layer+1; list.size()<totalelements && i<m-layer ;i++){
            list.add(matrix[i][col]);
        }
        row=matrix.length-1-layer;
         for(int j=n-2-layer;  list.size()<totalelements &&j>=layer  ;j--){
            list.add(matrix[row][j]);
        }

        col=layer;
        for(int i=m-2-layer;   list.size()<totalelements && i>=layer+1 ;i--){
                list.add(matrix[i][col]);
        }


   }
   return list;
}
Enter fullscreen mode Exit fullscreen mode

}

Top comments (0)