public List<Integer> spiralOrder(int[][] matrix) {
        int l = 0;
        int r = matrix[0].length - 1;
        int u = 0;
        int d = matrix.length - 1;
        List<Integer> list=new ArrayList<>();
        while(l<=r&&u<=d){
            for(int i=l;i<=r;i++){
                list.add(matrix[u][i]);
            }
            u++;
             for(int i=u;i<=d;i++){
                list.add(matrix[i][r]);
            }
            r--;
            for (int i = r; i >= l && u <= d; i--) {
                list.add(matrix[d][i]);
            }
            d--;
            for (int i = d; i >= u && l <= r; i--) {
                list.add(matrix[i][l]);
            }
            l++;

        }
        return list;

    }