牛客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;
    }
};
相关推荐
qqxhb1 小时前
零基础数据结构与算法——第四章:基础算法-排序(上)
java·数据结构·算法·冒泡·插入·选择
FirstFrost --sy3 小时前
数据结构之二叉树
c语言·数据结构·c++·算法·链表·深度优先·广度优先
森焱森3 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机
搂鱼1145144 小时前
(倍增)洛谷 P1613 跑路/P4155 国旗计划
算法
Yingye Zhu(HPXXZYY)4 小时前
Codeforces 2021 C Those Who Are With Us
数据结构·c++·算法
无聊的小坏坏5 小时前
三种方法详解最长回文子串问题
c++·算法·回文串
长路 ㅤ   5 小时前
Java后端技术博客汇总文档
分布式·算法·技术分享·编程学习·java后端
秋说5 小时前
【PTA数据结构 | C语言版】两枚硬币
c语言·数据结构·算法
qq_513970445 小时前
力扣 hot100 Day37
算法·leetcode
不見星空6 小时前
leetcode 每日一题 1865. 找出和为指定值的下标对
算法·leetcode