在matlab中,有乙個非常有用的函式 reshape,它可以將乙個矩陣重塑為另乙個大小不同的新矩陣,但保留其原始資料。給出乙個由二維陣列表示的矩陣,以及兩個正整數r和c,分別表示想要的重構的矩陣的行數和列數。
重構後的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。如果具有給定引數的reshape操作是可行且合理的,則輸出新的重塑矩陣;否則,輸出原始矩陣。
示例 1:輸入:nums =
[[1,2],
[3,4]]
r = 1, c = 4
輸出:[[1,2,3,4]]
解釋:行遍歷nums的結果是 [1,2,3,4]。新的矩陣是 1 * 4 矩陣, 用之前的元素值一行一行填充新矩陣。
示例 2:輸入:nums =
[[1,2],
[3,4]]
r = 2, c = 4
輸出:[[1,2],
[3,4]]
解釋:沒有辦法將 2 * 2 矩陣轉化為 2 * 4 矩陣。 所以輸出原矩陣。
注意:思路1:直接遷移的方法,申請乙個ans[r][c]的矩陣,將nums中的元素放入ans陣列中,時間複雜度o(r*c)給定矩陣的寬和高範圍在 [1, 100]。
給定的 r 和 c 都是正數。
related topics 陣列
class
solution
int ans[
]=newint
[r][c]
;int cnums = nums[0]
.length;
for(
int i =
0; i < nums.length; i++)}
return ans;
}}
原來以為通關了,直到我看到了這個答案:
其實兩者的思想是一致的,都是利用了一維資料上的元素位置 與二維陣列上元素位置的對映關係,但**更易閱讀
matrix[x/c][x%c] = nums[x];其中c就是二維陣列的列數,x為一維陣列中的索引位置
class
solution
int ans[
]=newint
[r][c]
;int rnums = nums.length;
int cnums = nums[0]
.length;
// 這裡直接採用一維陣列的思想,將一維陣列作為轉換的中介,**更易閱讀
for(
int i =
0; i < rnums * cnums; i++
)return ans;
}}
陣列 Leetcode566 重塑矩陣
難度 簡單 題目 給出乙個由二維陣列表示的矩陣,以及兩個正整數r和c,分別表示想要的重構的矩陣的行數和列數。重構後的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。如果具有給定引數的reshape操作是可行且合理的,則輸出新的重塑矩陣 否則,輸出原始矩陣。示例 1 輸入 nums 1,2 3,4...
一維陣列與二維陣列
1.一維陣列的定義格式為 型別說明符 陣列名 常量表示式 在定義陣列時,需要指定陣列中元素的個數,方括弧中的常量表示式用來表示元素的個數,即陣列長度。常量表示式中可以包括常量和符號常量,但不能包含變數。c語言不允許對陣列的大小作動態定義,即陣列的大小不依賴於程式執行過程中變數的值。在定義陣列時對陣列...
PHP 陣列去重(一維 二維)
array unique函式就是可以處重的,它具備了這個功能了,下面我們一來看乙個關於php使用array unique對二維陣列去重處理例子。php 5.2.9 版本增加了array unique對多維陣列的支援,在處理多維陣列是需要設定sort flags引數 一維陣列的重複項 使用array ...