本文主要是介绍牛客NC18 顺时针旋转矩阵【中等 数学 Java/Go/PHP/C++】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
题目链接:
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 := 0re := n - 1for 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;}
};
这篇关于牛客NC18 顺时针旋转矩阵【中等 数学 Java/Go/PHP/C++】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!