package problems.medium; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Created by sherxon on 2/9/17. */ public class SpiralMatrix { public static void main(String[] args) { spiralOrder(new int[][]{ {1, 2, 3}, {5, 6, 7}, {9, 10, 11}, }); } static List<Integer> spiralOrder(int[][] a) { if (a.length == 0 || a[0].length == 0) return Collections.emptyList(); int size = a.length * a[0].length; List<Integer> list = new ArrayList<>(size); for (int i = 0; i < a.length / 2 + 1; i++) { for (int j = i; j < a[0].length - i && list.size() < size; j++) { list.add(a[i][j]); } for (int j = i + 1; j < a.length - i && list.size() < size; j++) { list.add(a[j][a[0].length - i - 1]); } for (int j = i + 1; j < a[0].length - i && list.size() < size; j++) { list.add(a[a.length - i - 1][a[0].length - j - 1]); } for (int j = i + 1; j < a.length - i - 1 && list.size() < size; j++) { list.add(a[a.length - j - 1][i]); } } System.out.println(list); return list; } }