LeetCode-566. Reshape the Matrix

題目

In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with different size but keep its original data.

You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.

The reshaped matrix need to 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: nums = [[1,2], [3,4]]r = 1, c = 4
Output: [[1,2,3,4]]
Explanation:The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.

Example 2:
Input: nums = [[1,2], [3,4]]r = 2, c = 4
Output: [[1,2], [3,4]]
Explanation:There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.

Note:
The height and width of the given matrix is in range [1, 100].
The given r and c are all positive.

Subscribe to see which companies asked this question.

代碼

func matrixReshape(_ nums: [[Int]], _ r: Int, _ c: Int) -> [[Int]] {
    var tmp: [Int] = nums.flatMap{$0}
    guard tmp.count % (r * c) == 0 else {
        return nums
    }
    var arr: [[Int]] = []
    for i in 0..<r {
        var t: [Int] = []
        for j in 0..<c {
            t.append(tmp[i*c+j])
        }
        arr.append(t)
    }
    return arr
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,768評論 0 33
  • 題目 In MATLAB, there is a very useful function called 'res...
    Eazow閱讀 198評論 0 0
  • 很長一段時間,在兼職的地方感覺把自己培養成了一個脾氣很大,很受不了比自己弱的人,于是眉頭緊皺到了自己都能感受得到,...
    十畝魚干閱讀 319評論 0 0
  • 飲中八仙包括李白、賀知章、李適之、李琎、崔宗之、蘇晉、張旭、焦遂。 指唐朝嗜酒好仙的八位學者名人,亦稱酒中八仙或醉...
    天馬酒仙閱讀 960評論 0 1
  • 額,今天勉強寫了一篇英語作文,勉勉強強糊弄完了一篇英語作文,那時候突然發現自己好想玩,因為有電腦吧?不過還是搞了半...
    藍道閱讀 153評論 0 0