Ошибка выполнения матрицы Java

Письмо об упражнении:

Учитывая матрицу из m x n элементов (m строк, n столбцов), вернуть все элементы матрицы в спиральном порядке.

Например, учитывая следующую матрицу:

[
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ]
    You should return [1,2,3,6,9,8,7,4,5].

Данный код:

public class Solution {
  public List<Integer> spiralOrder(int[][] matrix) {
  }
}

Мой код:

public List<Integer> spiralOrder(int[][] matrix) {
        if(matrix == null || (matrix.length == 0))
            return new ArrayList<Integer>();
        int arriba = 0;
        int derecha = matrix[0].length - 1;
        int abajo = matrix.length - 1;
        int izquierda = 0;
        List<Integer> retorno = new ArrayList<Integer>();
        while(true)
        {
            for(int i = izquierda; i <= derecha; i++)
                retorno.add(matrix[arriba][i]);
            arriba++;
            for(int i = arriba; i <= abajo; i++)
                 retorno.add(matrix[i][derecha]);
            derecha--;
            for(int i = derecha; i >= izquierda; i--)
                retorno.add(matrix[abajo][i]);
            abajo--;
            for(int i = abajo; i >= arriba; i--)
                retorno.add(matrix[i][izquierda]);
            izquierda++;
            if(izquierda >= derecha)
                return retorno;
        }
    }
}

Ошибка:

Runtime Error Message:
Line 13: java.lang.ArrayIndexOutOfBoundsException: 1
Last executed input:
[[1,2,3,4,5,6,7,8,9,10]]

Какие-либо предложения? Я не могу сказать, что не так. Почему это за пределами? Упражнение можно найтиВот

Ответы на вопрос(2)

Ваш ответ на вопрос