1、旋转矩阵
//输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 // // // // 示例 1: // // 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] //输出:[1,2,3,6,9,8,7,4,5] // // // 示例 2: // // 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] //输出:[1,2,3,4,8,12,11,10,9,5,6,7] // // // // // 限制: // // // 0 <= matrix.length <= 100 // 0 <= matrix[i].length <= 100 // // // 注意:本题与主站 54 题相同:https://leetcode-cn.com/problems/spiral-matrix/ // Related Topics 数组
这是个中等难度的题,具体解答可以参考
public int[] spiralOrder(int[][] matrix) {
if(matrix.length == 0){
return new int[0];
}
//设定四个边界
int l = 0, r = matrix[0].length-1, t=0, b=matrix.length-1,x=0;
int[] res = new int[(r+1)*(b+1)];
while (true){
//从左到右
for (int i = l; i <= r; i++) {
res[x++] = matrix[t][i];
}
if(++t > b){
break;
}
//从上到下
for (int i = t; i <= b; i++) {
res[x++] = matrix[i][r];
}
if(--r < l){
break;
}
//从右到左
for (int i = r; i >= l; i--) {
res[x++] = matrix[b][i];
}
if(--b < t){
break;
}
//从下到上
for (int i = b; i >= t; i--) {
res[x++] = matrix[i][l];
}
if(++l > r){
break;
}
}
return res;
}