Leetcode Note: Go - Reshape the Matrix

Reshape the Matrix - LeetCode
https://leetcode.com/problems/reshape-the-matrix/

  • Go 言語で取り組んだメモ

所感

  • MITLAB で提供されている reshape 関数を実装する
  • m x n の matrix を、元のデータを保持したままサイズ r x c の異なる matrix に reshape して [][]int として return する
  • 渡される引数:
    • mat: m x n の matrix
    • r, c: reshape したい matrix の number of rows, number of colums

回答

Go O(n) - LeetCode Discuss
https://leetcode.com/problems/reshape-the-matrix/discuss/2248978/Go-O(n)

func matrixReshape(mat [][]int, r int, c int) [][]int {
	if r*c != len(mat)*len(mat[0]) {
		return mat
	}

	res := make([][]int, r)

	for i := 0; i < r; i++ {
		res[i] = make([]int, c)
	}

	resRow, resCol := 0, 0

	for row := 0; row < len(mat); row++ {
		for col := 0; col < len(mat[0]); col++ {
			res[resRow][resCol] = mat[row][col]
			resCol++

			if resCol > c-1 {
				resRow++
				resCol = 0
			}
		}
	}

	return res
}