Java矩阵旋转270_矩阵旋转系列之LeetCode/Rotate Image && Jobdu/题目1164:旋转矩阵 | 学步园...

编程知识 行业动态 更新时间:2024-06-13 00:20:03

Rotate Image Total Accepted: 4289 Total Submissions: 14183 My Submissions

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up:

Could you do this in-place?

旋转矩阵,这个比九度题目1164:旋转矩阵要简单一些。

只是顺时针旋转90度。

假设原矩阵名称为arrayA,旋转后矩阵为arrayB。

举例4*4矩阵并给出旋转示意图,以及关系。

原图:

1、顺时针旋转90图

关系arrayB[i][j] == arrayA[N-j-1][i]

2、顺时针旋转180图

关系arrayB[i][j] == arrayA[N-i-1][N-j-1]

3、顺时针旋转270图

关系arrayB[i][j] == arrayA[j][N-i-1]

LeetCode Java AC

public class Solution {

public void rotate(int[][] matrix) {

if(matrix == null){

return;

}

int n = matrix.length;

int array[][] = new int[n][n];

for(int i = 0; i < n; i++){

for(int j = 0; j < n; j++){

array[i][j] = matrix[n-1-j][i];

}

}

for(int i = 0; i < n; i++){

for(int j = 0; j < n; j++){

matrix[i][j] = array[i][j];

}

}

}

}

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

while (scanner.hasNext()) {

int N = scanner.nextInt();

int arrayA[][] = new int[N][N];

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

int num = scanner.nextInt();

arrayA[i][j] = num;

}

}

int arrayB[][] = new int[N][N];

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

int num = scanner.nextInt();

arrayB[i][j] = num;

}

}

int firstNum = revolve0(arrayA,arrayB,N);

int secNum =revolve90(arrayA,arrayB,N);

int thiNum = revolve180(arrayA,arrayB,N);

int fourNum = revolve270(arrayA,arrayB,N);

if (firstNum == -1 && secNum == -1 && thiNum == -1 && fourNum == -1) {

System.out.println(-1);

}else {

List arrayList = new ArrayList();

if (firstNum != -1) {

arrayList.add(firstNum);

}

if (secNum != -1) {

arrayList.add(secNum);

}

if (thiNum != -1) {

arrayList.add(thiNum);

}

if (fourNum != -1) {

arrayList.add(fourNum);

}

Collections.sort(arrayList);

System.out.println(arrayList.get(0));

}

}

}

private static int revolve0(int[][] arrayA, int[][] arrayB, int N) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (arrayB[i][j] == arrayA[i][j]) {

continue;

}else {

return -1;

}

}

}

return 0;

}

private static int revolve90(int[][] arrayA, int[][] arrayB, int N) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (arrayB[i][j] == arrayA[N-j-1][i]) {

continue;

}else {

return -1;

}

}

}

return 90;

}

private static int revolve180(int[][] arrayA, int[][] arrayB, int N) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (arrayB[i][j] == arrayA[N-i-1][N-j-1]) {

continue;

}else {

return -1;

}

}

}

return 180;

}

private static int revolve270(int[][] arrayA, int[][] arrayB, int N) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (arrayB[i][j] == arrayA[j][N-i-1]) {

continue;

}else {

return -1;

}

}

}

return 270;

}

}

/**************************************************************

Problem: 1164

User: wzqwsrf

Language: Java

Result: Accepted

Time:110 ms

Memory:18660 kb

****************************************************************/

更多推荐

Java矩阵旋转270_矩阵旋转系列之LeetCode/Rotate Image && Jobdu/题目1164:旋转矩阵 | 学步园...

本文发布于:2023-03-29 10:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/942d8d40c03c81e2e62aab4fc4febb15.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:矩阵   题目   旋转矩阵   系列之   LeetCode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!