当前位置: 代码迷 >> 综合 >> Leetcode 48. Rotate Image (python+cpp)
  详细解决方案

Leetcode 48. Rotate Image (python+cpp)

热度:81   发布时间:2023-11-26 07:20:53.0

Leetcode 48. Rotate Image

  • 题目
  • 解法:transpose and reverse

题目

在这里插入图片描述

解法:transpose and reverse

对于这种题目,我个人觉得知道一种最经典直观的解法就好了。先transpose再reverse by row,这是最直观也是容易理解的方法。顺便也学习了transpose操作其实这么简单,说实话之前都没有注意,这是个非常实用的东西。
稍微拓展一下,如果是逆时针的话就更简单:transpose之后按照row为单位进行reverse就好。就是第一行跟最后一行对调,第二行跟倒数第二行对调,以此类推
python代码如下:

class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""n = len(matrix)# transposefor i in range(n):for j in range(i,n):matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]# reverse by rowfor i in range(n):matrix[i] = matrix[i][::-1]

C++代码如下:
c++只需要使用一个swap函数就全部搞定

class Solution {
    
public:void rotate(vector<vector<int>>& matrix) {
    int n = matrix.size();for (int i=0;i<n;i++){
    for (int j=i;j<n;j++){
    swap(matrix[i][j],matrix[j][i]);}}for (int i=0;i<n;i++){
    for (int j=0,k=n-1;j<k;j++,k--){
    swap(matrix[i][j],matrix[i][k]);}}}
};
  相关解决方案