Leetcodeブラシ31-867.回転行列(C++詳細解法!!)


タイトルソース:リンク:[https://leetcode-cn.com/problems/transpose-matrix/].
867.回転行列
  • 1.問題の説明
  • 2.マイソリューション
  • 3.オオカミたちの解決策
  • 4.私の収穫
  • 1.問題の説明
    マトリクスAが与えられ、Aの回転マトリクスが返される.
    マトリクスの回転とは、マトリクスの主対角線を反転させ、マトリクスの行インデックスと列インデックスを交換することです.
    例1:
      :[[1,2,3],[4,5,6],[7,8,9]]
      :[[1,4,7],[2,5,8],[3,6,9]]
    

    例2:
      :[[1,2,3],[4,5,6]]
      :[[1,4],[2,5],[3,6]]
    

    ヒント:
    1. 1 <= A.length <= 1000
    2. 1 <= A[0].length <= 1000
    

    2.私のソリューション
    考え方は簡単ですが、最初はvectorコードは以下の通りです.
    class Solution {
         
    public:
        vector<vector<int>> transpose(vector<vector<int>>& A) {
         
            vector<vector<int> > res(A[0].size(), vector<int>(A.size(), 0)); //   vector  ,                     
            for(int i = 0; i < A.size(); ++i)
            {
         
                for(int j = 0; j < A[0].size(); ++j)
                {
         
                    res[j][i] = A[i][j];     //     
                }
            }
            return res;
        }
    };
    

    3.オオカミたちの解決策
    1位のソリューション、4 ms.構想と実現方法は基本的に一致している.
    class Solution {
         
    public:
        vector<vector<int>> transpose(vector<vector<int>>& A) {
         
            int n = A.size(), m = A[0].size();
            vector<vector<int>> B(m,vector<int>(n,0));
            for (int i = 0; i < n; i++) {
         
                for (int j = 0; j < m; j++) {
         
                    B[j][i] = A[i][j];
                }
            }
            return B;
        }
    };
    

    4.私の収穫
    2 D vector初期化サイズ方法1:
     vector<vector<int> > newOne(r, vector<int>(c, 0));
    

    方法2:
        vector<vector<int> > res;
            res.resize(r);//r 
            for (int k = 0; k < r; ++k){
         
                res[k].resize(c);//   c 
            }
    

    2019/3/22胡雲雲は南京31