2022. 將一維數組轉變成二維數組
給你一個下標從 0 開始的一維整數數組 original 和兩個整數 m 和 n 。你需要使用 original 中 所有 元素創建一個 m 行 n 列的二維數組。
original 中下標從 0 到 n - 1 (都 包含 )的元素構成二維數組的第一行,下標從 n 到 2 * n - 1 (都 包含 )的元素構成二維數組的第二行,依此類推。
請你根據上述過程返回一個 m x n 的二維數組。如果無法構成這樣的二維數組,請你返回一個空的二維數組。
示例 1:輸入:original = [1,2,3,4], m = 2, n = 2
輸出:[[1,2],[3,4]]
解釋:
構造出的二維數組應該包含 2 行 2 列。
original 中第一個 n=2 的部分為 [1,2] ,構成二維數組的第一行。
original 中第二個 n=2 的部分為 [3,4] ,構成二維數組的第二行。示例 2:輸入:original = [1,2,3], m = 1, n = 3
輸出:[[1,2,3]]
解釋:
構造出的二維數組應該包含 1 行 3 列。
將 original 中所有三個元素放入第一行中,構成要求的二維數組。示例 3:輸入:original = [1,2], m = 1, n = 1
輸出:[]
解釋:
original 中有 2 個元素。
無法將 2 個元素放入到一個 1x1 的二維數組中,所以返回一個空的二維數組。示例 4:輸入:original = [3], m = 1, n = 2
輸出:[]
解釋:
original 中只有 1 個元素。
無法將 1 個元素放滿一個 1x2 的二維數組,所以返回一個空的二維數組。
提示:
1 <= original.length <= 5?1045 * 10^45?104
1 <= original[i] <= 10510^5105
1 <= m, n <= 4?1044 * 10^44?104
解題思路
- 先判斷original數組的大小是否與二維數組的大小相等,如果不相等直接返回空數組
- 將original數組中的元素按行填充到新的二維數組里面
代碼
class Solution {
public:vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {if (original.size()!=m*n) return vector<vector<int>>{};vector<vector<int>> v(m,vector<int>(n,0));int idx(0);for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {v[i][j]=original[idx++];}}return v;}
};