牛客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;
    }
};
相关推荐
QiLinkOS1 小时前
第三视觉理解徐玉生与他的商业活动(30)
大数据·c++·人工智能·算法·开源协议
疯狂打码的少年1 小时前
【操作系统】页面置换算法(OPT/FIFO/LRU)
算法
小O的算法实验室2 小时前
2026年CIE,优化客货协同运输:综合地铁系统的列车容量动态分配
算法
Coder_Shenshen3 小时前
西门子S7CommPlus协议鉴权算法原理与流程详解
网络·后端·算法
硕风和炜3 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集
我是一颗柠檬4 小时前
【Java项目技术亮点】加权轮询负载均衡算法
java·算法·负载均衡
灯厂码农4 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
凯瑟琳.奥古斯特6 小时前
K次取反最大化数组和解法(力扣1005)
开发语言·c++·算法·leetcode·职场和发展
Jerry6 小时前
LeetCode 203. 移除链表元素
算法
地平线开发者6 小时前
征程 6 | 工具链 QAT ObserverBase 源码解析
算法