@@ -0,0 +1,1886 @@
+public class Solution %7B%0A    public List%3CInteger%3E spiralOrder(int%5B%5D%5B%5D matrix) %7B%0A        if (matrix == null %7C%7C matrix.length == 0 %7C%7C matrix%5B0%5D.length == 0)%0A            return new ArrayList%3C%3E();%0A        int x = 0, y = 0, dir = 0;%0A        int xMin = 0, xMax = matrix%5B0%5D.length-1, yMin = 0, yMax = matrix.length-1;%0A        List%3CInteger%3E result = new ArrayList%3C%3E();%0A        %0A        while(!end(x, y, xMin, xMax, yMin, yMax)) %7B%0A            result.add(matrix%5By%5D%5Bx%5D);%0A            switch (dir) %7B%0A                case 0:%0A                    if (x+1 %3E xMax) %7B%0A                        yMin += 1;%0A                        y += 1;%0A                        dir = turn(dir);%0A                    %7D else %7B%0A                        x += 1;%0A                    %7D%0A                    break;%0A                case 1:%0A                    if (y+1 %3E yMax) %7B%0A                        xMax -= 1;%0A                        x -= 1;%0A                        dir = turn(dir);%0A                    %7D else %7B%0A                        y += 1;%0A                    %7D%0A                    break;%0A                case 2:%0A                    if (x-1 %3C xMin) %7B%0A                        yMax -= 1;%0A                        y -= 1;%0A                        dir = turn(dir);%0A                    %7D else %7B%0A                        x -= 1;%0A                    %7D%0A                    break;%0A                case 3:%0A                    if (y-1 %3C yMin) %7B%0A                        xMin += 1;%0A                        x += 1;%0A                        dir = turn(dir);%0A                    %7D else %7B%0A                        y -= 1;%0A                    %7D%0A                    break;%0A            %7D%0A        %7D%0A        return result;%0A    %7D%0A    %0A    private boolean end(int x, int y, int xMin, int xMax, int yMin, int yMax) %7B%0A        return x %3C xMin %7C%7C x %3E xMax %7C%7C y %3C yMin %7C%7C y %3E yMax;%0A    %7D%0A    %0A    private int turn(int dir) %7B%0A        return (dir + 1) %25 4;%0A    %7D%0A%7D%0A

54. Spiral Matrix