牛客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;
    }
};
相关推荐
一个不知名程序员www1 分钟前
算法学习入门---二分查找(C++)
c++·算法
2301_8079973827 分钟前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法36 分钟前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
TL滕37 分钟前
从0开始学算法——第一天(认识算法)
数据结构·笔记·学习·算法
小欣加油38 分钟前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
love is sour1 小时前
聚类(Clustering)详解:让机器自己发现数据结构
算法·支持向量机·聚类
烟袅1 小时前
LeetCode 142:环形链表 II —— 快慢指针定位环的起点(JavaScript)
前端·javascript·算法
CoovallyAIHub1 小时前
OCR战场再起风云:LightOnOCR-1B凭什么比DeepSeekOCR快1.7倍?(附演示开源地址)
深度学习·算法·计算机视觉
海琴烟Sunshine2 小时前
leetcode 190. 颠倒二进制位 python
python·算法·leetcode
Xの哲學2 小时前
Linux eMMC子系统深度解析:从硬件协议到内核实现
linux·网络·算法·架构·边缘计算