随堂练习 旋转矩阵
題目:
有一個nxn整數矩陣,請編寫一個算法,將矩陣順時針旋轉90度。
給定一個nxn的矩陣,和矩陣的階數n,請返回旋轉后的nxn矩陣。
輸入:
[[1,2,3],[4,5,6],[7,8,9]],3輸出:
[[7,4,1],[8,5,2],[9,6,3]]分析
Java代碼:
Java獲取二維數組的行列長度
二維數組定義:int array[][] = new int[3][3];
獲取行數:?int rowLength = array.length;
獲取列數:?int colLength = array[0].length;
import java.util.*;public class Solution {public static void rotate(int[][] matrix) {int tR = 0;int tC = 0;int dR = matrix.length - 1;int dC = matrix[0].length - 1;while (tR < dR) {rotateEdge(matrix, tR++, tC++, dR--, dC--);}}public static void rotateEdge(int[][] m, int tR, int tC, int dR, int dC) {int times = dC - tC; int tmp = 0;for (int i = 0; i != times; i++) {tmp = m[tR][tC + i];m[tR][tC + i] = m[dR - i][tC];m[dR - i][tC] = m[dR][dC - i];m[dR][dC - i] = m[tR + i][dC];m[tR + i][dC] = tmp;}}public static void printMatrix(int[][] matrix) {for (int i = 0; i != matrix.length; i++) {for (int j = 0; j != matrix[0].length; j++) {System.out.print(matrix[i][j] + " ");}System.out.println();}}public int[][] rotateMatrix(int[][] matrix, int n) {// write code hererotate(matrix);return matrix;} }C++代碼:
vector<int> a; //聲明了一個空向量。
vector<int> a[n]; //聲明了一個包含n空向量的數組。
vector<int> a(n); //聲明了一個包含n零的向量。
vector<int> a{n}; //聲明了一個包含單個元素n的向量。
vector<vector<int> > A;//正確的定義方式
vector<vector<int>> A;//c++11之前這樣定義是錯誤的,c++11之后支持這種定義方式
len = A.size(); //vector<vector<int> >A中的vector元素的個數
len = A[i].size(); //vector<vector<int> >A中第i個vector元素的長度
Python代碼:
# -*- coding:utf-8 -*-class Solution:def rotateMatrix(self, mat, n):# write code herereturn [x[::-1] for x in zip(*mat)]總結
- 上一篇: postgresql下载linux版本
- 下一篇: 一般什么企业需要开展等保三级测评工作