Clean Java, readable, human friendly code


  • 20
    J
    public class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> res = new ArrayList<Integer>();
            if(matrix.length == 0 || matrix[0].length == 0) return res;
            
            int top = 0;
            int bottom = matrix.length-1;
            int left = 0;
            int right = matrix[0].length-1;
            
            while(true){
                for(int i = left; i <= right; i++) res.add(matrix[top][i]);
                top++;
                if(left > right || top > bottom) break;
                
                for(int i = top; i <= bottom; i++) res.add(matrix[i][right]);
                right--;
                if(left > right || top > bottom) break;
                
                for(int i = right; i >= left; i--) res.add(matrix[bottom][i]);
                bottom--;
                if(left > right || top > bottom) break;
                
                for(int i = bottom; i >= top; i--) res.add(matrix[i][left]);
                left++;
                if(left > right || top > bottom) break;
            }
            
            return res;
        }
        
    }

  • 0
    A

    @Jingshi What is the running time for this algorithm?


  • 2
    D

    @acheiver Always m*n because we visit each element exactly once.


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.