void helper(int** matrix, int start, int len) { if(len <= 1) return; int tmp1, tmp2; for(int i = 0; i < len - 1; i++) { //save top //top to righ tmp1 = matrix[start + i][start + len - 1]; matrix[start + i][start + len - 1] = matrix[start][start + i]; //right to button tmp2 = matrix[start + len - 1][start + len - 1 - i]; matrix[start + len - 1][start + len - 1 - i] = tmp1; tmp1 = tmp2; //buttom to left tmp2 = matrix[start + len - 1 - i][start]; matrix[start + len - 1 - i][start] = tmp1; tmp1 = tmp2; //left to top matrix[start][start + i] = tmp1; } helper(matrix, start + 1, len - 2); } void rotate(int** matrix, int matrixRowSize, int matrixColSize) { helper(matrix, 0, matrixRowSize); }