
问题
给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
提示:
1 <= A.length <= 1000
1 <= A[0].length <= 1000
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.
Input: [[1,2,3],[4,5,6],[7,8,9]]
Output: [[1,4,7],[2,5,8],[3,6,9]]
Input: [[1,2,3],[4,5,6]]
Output: [[1,4],[2,5],[3,6]]
Note:
1 <= A.length <= 1000
1 <= A[0].length <= 1000
示例
public class Program { public static void Main(string[] args) { int[][] nums = null; nums = new int[3][] { new int[] {1, 2, 3}, new int[] {4, 5, 6}, new int[] {7, 8, 9} }; var res = Transpose(nums); ShowArray(res); Console.ReadKey(); } private static void ShowArray(int[][] array) { foreach(var line in array) { foreach(var num in line) { Console.Write($"{num} "); } } Console.WriteLine(); } private static int[][] Transpose(int[][] A) { var m = A.Length; var n = A[0].Length; var result = new int[n][]; for(int i = 0; i < n; i++) { result[i] = new int[m]; } for(var i = 0; i < n; i++) { for(var j = 0; j < m; j++) { result[i][j] = A[j][i]; } } return result; } }
以上给出1种算法实现,以下是这个案例的输出结果:
1 4 7 2 5 8 3 6 9
分析:
显而易见,以上算法的时间复杂度为: 。
本文由 .Net中文网 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:https://www.byteflying.com/archives/3756。