//In MATLAB, there is a handy function called reshape which can reshape an m x
//n matrix into a new one with a different size r x c keeping its original data. 
//
// You are given an m x n matrix mat and two integers r and c representing the 
//number of rows and the number of columns of the wanted reshaped matrix. 
//
// The reshaped matrix should be filled with all the elements of the original 
//matrix in the same row-traversing order as they were. 
//
// If the reshape operation with given parameters is possible and legal, output 
//the new reshaped matrix; Otherwise, output the original matrix. 
//
// 
// Example 1: 
//
// 
//Input: mat = [[1,2],[3,4]], r = 1, c = 4
//Output: [[1,2,3,4]]
// 
//
// Example 2: 
//
// 
//Input: mat = [[1,2],[3,4]], r = 2, c = 4
//Output: [[1,2],[3,4]]
// 
//
// 
// Constraints: 
//
// 
// m == mat.length 
// n == mat[i].length 
// 1 <= m, n <= 100 
// -1000 <= mat[i][j] <= 1000 
// 1 <= r, c <= 300 
// 
// Related Topics Array Matrix Simulation 👍 1527 👎 168


package leetcodeProblem.leetcode.editor.en

class ReshapeTheMatrix {
    fun solution() {
    }

    //below code will be used for submission to leetcode (using plugin of course)
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        fun matrixReshape(nums: Array<IntArray>, r: Int, c: Int): Array<IntArray> {

            val mutableList = mutableListOf<Int>()

            nums.forEach { intArray ->

                intArray.forEach { int ->

                    mutableList.add(int)
                }
            }

            if (mutableList.count() != r * c) return nums

            val answer = Array(r) { IntArray(c) }

            var index = 0

            for (row in 0 until r) {

                for (column in 0 until c) {

                    answer[row][column] = mutableList[index]

                    index++
                }
            }

            return answer
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}

fun main() {}
  

