/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @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;
}