Leetcode problema solução-entrevista pergunta 01.07. Matriz de rotação

Link do tópico

Descrição do título:

Fornece uma imagem representada por uma matriz N × N, onde cada pixel tem 4 bytes de tamanho. Projete um algoritmo para girar a imagem em 90 graus.

Isso pode ser feito sem ocupar espaço de memória adicional?

Exemplo 1:

Dada matriz =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
gire a matriz de entrada no lugar para torná-la:
[
[7,4,1],
[ 8,5,2],
[9,6,3]
]

Exemplo 2:

Dada matriz =
[
[5, 1, 9,11],
[2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
],
gire a entrada no lugar Matriz de modo que se torna:
[
[15,13, ​​2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]


Modificação in-situ

  Encontre a lei e dê uma pequena impressão da álgebra linear da faculdade. . .

  1. Transposição de matriz (troca de elementos para cima e para baixo ao longo da diagonal principal);
  2. Cada linha é virada para a esquerda e para a direita pelo ponto central.

Código

class Solution {
    
    
public:
    void rotate(vector<vector<int>>& matrix) {
    
    
        int len = matrix.size();
        for(int i = 0; i < len - 1; i++)
            for(int j = i + 1; j < len; j++)
                swap(matrix[i][j], matrix[j][i]);
            
        int mid = len / 2;
        for(int i = 0; i < len; i++){
    
    
            for(int j = 0; j < mid; j++){
    
    
                swap(matrix[i][j], matrix[i][len - 1 - j]);
            }
        }
        
        return;
    }
};


Se houver erros ou não forem rigorosos, corrija-me, muito obrigado.
Meu blog: http://breadhunter.gitee.io

Acho que você gosta

Origin blog.csdn.net/weixin_40807714/article/details/105355494
Recomendado
Clasificación