牛客NC18 顺时针旋转矩阵【中等 数学 Java/Go/PHP/C++】

题目


题目链接:

https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc

https://www.lintcode.com/problem/161/

思路

Java代码

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代码

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 复制代码
<?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++ 代码

cpp 复制代码
#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;
    }
};
相关推荐
故事和你9115 分钟前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
吴可可12331 分钟前
C#合并首尾相连多段线实战
算法·c#
KMDxiaozuanfeng1 小时前
卡梅德生物技术快报|SPR 技术应用|基于 SPR 亲和力的中药活性成分筛选系统实现与数据分析
科技·算法·面试·考试
꧁细听勿语情꧂2 小时前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
Felven2 小时前
B. The 67th 6-7 Integer Problem
数据结构·算法
玉树临风ives2 小时前
atcoder ABC 454 题解
算法·深度优先·图论
钮钴禄·爱因斯晨2 小时前
聚焦操作系统中的PV操作
数据库·算法·系统架构·c#
云泽8082 小时前
笔试算法 - 双指针篇(一):移动零、复写零、快乐数与盛水容器
c++·算法
不才小强2 小时前
目标跟踪算法DeepSort实战
人工智能·算法·目标跟踪
papership3 小时前
【入门级-数学与其他:1.数及其运算:进制与进制转换:二进制、八进制、十进制、十六进制】
算法