publicint[]circlePrint(int[][] input){int m = input.length;int n = input[0].length;int[] res =newint[m * n];int left =0, right = input[0].length -1;int top =0, bottom = input.length -1;int cur =0;while(left < right && top < bottom){for(int i = left; i < right; i++){
res[cur]= input[top][i];
cur++;}for(int i = top; i < bottom; i++){
res[cur]= input[i][right];
cur++;}for(int i = right; i > left; i--){
res[cur]= input[bottom][i];
cur++;}for(int i = bottom; i > top; i--){
res[cur]= input[i][left];
cur++;}
left++;
right--;
top++;
bottom--;}if(left == right){for(int i = top; i <= bottom; i++){
res[cur]= input[i][left];
cur++;}}elseif(top == bottom){for(int i = left; i <= right; i++){
res[cur]= input[top][i];
cur++;}}return res;}
classSolution{publicint[]spiralOrder(int[][] matrix){if(matrix.length ==0)returnnewint[0];int l =0, r = matrix[0].length -1, t =0, b = matrix.length -1, x =0;int[] res =newint[(r +1)*(b +1)];while(true){for(int i = l; i <= r; i++) res[x++]= matrix[t][i];// left to right.if(++t > b)break;for(int i = t; i <= b; i++) res[x++]= matrix[i][r];// top to bottom.if(l >--r)break;for(int i = r; i >= l; i--) res[x++]= matrix[b][i];// right to left.if(t >--b)break;for(int i = b; i >= t; i--) res[x++]= matrix[i][l];// bottom to top.if(++l > r)break;}return res;}}
public int[] circlePrint(int[][] input) { int m = input.length; int n = input[0].length; int[] res = new int[m * n]; int left = 0, right = input[0].length - 1; int top = 0, bottom = input.length - 1; int cur.