From 9e50dd5340970929864f3246adffc6a3e4d4711a Mon Sep 17 00:00:00 2001 From: Openset Date: Thu, 10 Jan 2019 14:04:32 +0800 Subject: [PATCH] Add: Transpose Matrix --- problems/transpose-matrix/transpose_matrix.go | 14 ++++++ .../transpose-matrix/transpose_matrix_test.go | 44 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/problems/transpose-matrix/transpose_matrix.go b/problems/transpose-matrix/transpose_matrix.go index d231642da..d45553858 100644 --- a/problems/transpose-matrix/transpose_matrix.go +++ b/problems/transpose-matrix/transpose_matrix.go @@ -1 +1,15 @@ package transpose_matrix + +func transpose(A [][]int) [][]int { + m, n := len(A[0]), len(A) + B := make([][]int, m) + for i := 0; i < m; i++ { + B[i] = make([]int, n) + } + for i, row := range A { + for j, v := range row { + B[j][i] = v + } + } + return B +} diff --git a/problems/transpose-matrix/transpose_matrix_test.go b/problems/transpose-matrix/transpose_matrix_test.go index d231642da..012737cb3 100644 --- a/problems/transpose-matrix/transpose_matrix_test.go +++ b/problems/transpose-matrix/transpose_matrix_test.go @@ -1 +1,45 @@ package transpose_matrix + +import ( + "reflect" + "testing" +) + +type caseType struct { + input [][]int + expected [][]int +} + +func TestTranspose(t *testing.T) { + tests := [...]caseType{ + { + input: [][]int{ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }, + expected: [][]int{ + {1, 4, 7}, + {2, 5, 8}, + {3, 6, 9}, + }, + }, + { + input: [][]int{ + {1, 2, 3}, + {4, 5, 6}, + }, + expected: [][]int{ + {1, 4}, + {2, 5}, + {3, 6}, + }, + }, + } + for _, tc := range tests { + output := transpose(tc.input) + if !reflect.DeepEqual(output, tc.expected) { + t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected) + } + } +}