题解 | #顺时针旋转矩阵#
顺时针旋转矩阵
https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param mat int整型二维数组 * @param matRowLen int mat数组行数 * @param matColLen int* mat数组列数 * @param n int整型 * @return int整型二维数组 * @return int* returnSize 返回数组行数 * @return int** returnColumnSizes 返回数组列数 */ void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } void reverse(int* arr, int left, int right) { while(left < right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; } } int** rotateMatrix(int** mat, int matRowLen, int* matColLen, int n, int* returnSize, int** returnColumnSizes ) { // write code here *returnColumnSizes = (int*)malloc(matRowLen * sizeof(int)); if(*returnColumnSizes == NULL) { printf("内存分配失败,无法记录返回矩阵列数信息\n"); return NULL; } for(int i = 0; i < matRowLen; i++) { (*returnColumnSizes)[i] = matColLen[i]; for(int j = i + 1; j < matColLen[i]; j++) { swap(&mat[i][j], &mat[j][i]); } reverse(mat[i], 0, matColLen[i] - 1); } *returnSize = matRowLen; return mat; }