Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[LeetCode] 867. Transpose Matrix #867

Open
grandyang opened this issue May 30, 2019 · 0 comments
Open

[LeetCode] 867. Transpose Matrix #867

grandyang opened this issue May 30, 2019 · 0 comments

Comments

@grandyang
Copy link
Owner

grandyang commented May 30, 2019

Given a matrix A, return the transpose of A.

The transpose of a matrix is the matrix flipped over it's main diagonal, switching the row and column indices of the matrix.

Example 1:

Input: [[1,2,3],[4,5,6],[7,8,9]]
Output: [[1,4,7],[2,5,8],[3,6,9]]

Example 2:

Input: [[1,2,3],[4,5,6]]
Output: [[1,4],[2,5],[3,6]]

Note:

  1. 1 <= A.length <= 1000
  2. 1 <= A[0].length <= 1000

这道题让我们转置一个矩阵,在大学的线性代数中,转置操作应该说是非常的常见。所谓矩阵的转置,就是把 mxn 的矩阵变为 nxm 的,并且原本在 A[i][j] 位置的数字变到 A[j][i] 上即可,非常的简单直接。而且由于此题又限定了矩阵的大小范围为 [1, 1000],所以不存在空矩阵的情况,因而不用开始时对矩阵进行判空处理,直接去获取矩阵的宽和高即可。又因为之前说了转置会翻转原矩阵的宽和高,所以我们新建一个 nxm 的矩阵,然后遍历原矩阵中的每个数,将他们赋值到新矩阵中对应的位置上即可,参见代码如下:

class Solution {
public:
    vector<vector<int>> transpose(vector<vector<int>>& A) {
        int m = A.size(), n = A[0].size();
        vector<vector<int>> res(n, vector<int>(m));
		for (int i = 0; i < m; ++i) {
			for (int j = 0; j < n; ++j) {
				res[j][i] = A[i][j];
			}
		}
		return res;
    }
};

Github 同步地址:

#867

参考资料:

https://leetcode.com/problems/transpose-matrix/

https://leetcode.com/problems/transpose-matrix/discuss/146797/C%2B%2BJavaPython-Easy-Understood

LeetCode All in One 题目讲解汇总(持续更新中...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant