LeetCode-566. Remodelar la matriz [simple] -Análisis y código (Java)

LeetCode —— 566. Remodelar la matriz [Remodelar la matriz] [Simple] —— Análisis y código [Java]

1. Tema

En MATLAB, hay una función de remodelación muy útil, que puede remodelar una matriz en otra matriz nueva con un tamaño diferente, pero conservar sus datos originales.
Dada una matriz representada por una matriz bidimensional y dos enteros positivos r y c, que representan respectivamente el número de filas y columnas de la matriz reconstruida deseada.
La matriz reconstruida necesita llenar todos los elementos de la matriz original en el mismo orden transversal de fila.
Si la operación de remodelación con los parámetros dados es factible y razonable, se genera la nueva matriz de remodelación; de lo contrario, se genera la matriz original.

Ejemplo 1:

输入: 
nums = 
[[1,2],
 [3,4]]
r = 1, c = 4
输出: 
[[1,2,3,4]]
解释:
行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。

Ejemplo 2:

输入: 
nums = 
[[1,2],
 [3,4]]
r = 2, c = 4
输出: 
[[1,2],
 [3,4]]
解释:
没有办法将 2 * 2 矩阵转化为 2 * 4 矩阵。 所以输出原矩阵。

Nota:

  • El ancho y el alto de una matriz dada están en el rango de [1, 100].
  • Los dados r y c son ambos números positivos.

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/reshape-the-matrix Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos, análisis y código

1. Conversión directa

(1) Pensando

La viabilidad de remodelar la matriz se juzga si el número de elementos es igual y si los números de la matriz original se completan secuencialmente en la nueva matriz si se cumplen los requisitos.

(2) Código

class Solution {
    
    
    public int[][] matrixReshape(int[][] nums, int r, int c) {
    
    
        int r0 = nums.length, c0 = nums[0].length, n = r0 * c0;
        if (r * c != n)
            return nums;
        //重塑矩阵
        int[][] outputMatrix = new int[r][c];
        for (int i = 0; i < n; i++)
            outputMatrix[i / c][i % c] = nums[i / c0][i % c0];
        return outputMatrix;
    }
}

(3) Resultados

Tiempo de ejecución: 2 ms, superando al 47,97% de los usuarios
en todas las presentaciones de Java ; consumo de memoria: 39,8 MB, superando al 13,11% de los usuarios en todas las presentaciones de Java.

Tres, otro

Nada.

Supongo que te gusta

Origin blog.csdn.net/zml66666/article/details/114005067
Recomendado
Clasificación