题目
题目链接:
https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc
https://www.lintcode.com/problem/161/
思路
Java代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param mat int整型二维数组
* @param n int整型
* @return int整型二维数组
*/
public int[][] rotateMatrix (int[][] mat, int n) {
//1:水平翻转
//rs:当前处理的第一行,re:当前处理的最后一行
int rs = 0, re = n - 1;
while (rs <= re) {
//col:当前处理的第col列,rs行和re行的col的数进行交换
for (int col = 0; col < n ; col++) {
int t = mat[rs][col];
mat[rs][col] = mat[re][col];
mat[re][col] = t;
}
rs++;
re--;
}
//2.主对角线翻转
for (int i = 0; i < n ; i++) {
for (int j = 0; j < i ; j++) {
int t = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i] = t;
}
}
return mat;
}
}
Go代码
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param mat int整型二维数组
* @param n int整型
* @return int整型二维数组
*/
func rotateMatrix(mat [][]int, n int) [][]int {
//1.水平翻转
rs := 0
re := n - 1
for rs <= re {
for col := 0; col < n; col++ {
tmp := mat[rs][col]
mat[rs][col] = mat[re][col]
mat[re][col] = tmp
}
rs++
re--
}
//2.对角线翻转
for i := 0; i < n; i++ {
for j := 0; j < i; j++ {
tmp := mat[i][j]
mat[i][j] = mat[j][i]
mat[j][i] = tmp
}
}
return mat
}
PHP代码
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param mat int整型二维数组
* @param n int整型
* @return int整型二维数组
*/
function rotateMatrix( $mat , $n )
{
//水平翻转
$rs=0;
$re = $n-1;
while ($rs<=$re){
for($col=0;$col<$n;$col++){
$tmp = $mat[$rs][$col];
$mat[$rs][$col] = $mat[$re][$col];
$mat[$re][$col] = $tmp;
}
$rs++;
$re--;
}
//对角线翻转
for($i=0;$i<$n;$i++){
for($j=0;$j<$i;$j++){
$tmp = $mat[$i][$j];
$mat[$i][$j] = $mat[$j][$i];
$mat[$j][$i] =$tmp;
}
}
return $mat;
}
C++ 代码
#include <bits/types/struct_tm.h>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param mat int整型vector<vector<>>
* @param n int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > rotateMatrix(vector<vector<int> >& mat, int n) {
//水平翻转
int rs=0,re =n-1;
while(rs<=re){
for(int c=0;c<n;c++){
int tmp = mat[rs][c];
mat[rs][c] = mat[re][c];
mat[re][c] =tmp;
}
rs++;
re--;
}
//对角线翻转
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
int tmp = mat[i][j];
mat[i][j]=mat[j][i];
mat[j][i]=tmp;
}
}
return mat;
}
};