题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
/** * * @param matrix int整型二维数组 * @param matrixRowLen int matrix数组行数 * @param matrixColLen int* matrix数组列数 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* spiralOrder(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize ) { // write code here *returnSize = matrixRowLen * (*matrixColLen); if(matrix == NULL) { return NULL; } int index = 0; int* ans = (int*)malloc(sizeof(int) * 105); int i = 0, j = 0, m = 0, n = 0; // 从上到下 for(int start = 0; start < matrixRowLen; start++) { // 设置边界点 int right = *matrixColLen - start; int down = matrixRowLen - start; int left = 0 + start; int up = 0 + start; // 右 for(i = start; i < right; i++) { ans[index++] = matrix[start][i]; } i--; // 下 for(j = start+1; j < down; j++) { ans[index++] = matrix[j][i]; } j--; // 左 for(m = i-1; m >= start; m--) { ans[index++] = matrix[j][m]; } m++; // 上 for(n = j-1; n > start; n--) { ans[index++] = matrix[n][m]; } } return ans; }