@@ -65,9 +65,13 @@ original 中只有 1 个元素。
65
65
66
66
<!-- 这里可写通用的实现逻辑 -->
67
67
68
- 在该题当中,想要成功转换为二维数组, ** 元素不能少也不能多 ** ,所以需要先做一次长度判断,不对等的情况下直接退出。
68
+ ** 方法一:模拟 **
69
69
70
- 在数量正确时,则按照给出的规格,将 ` original ` 分割成小数组,放入返回数组当中。
70
+ 根据题目描述,我们知道,要想构造出一个 $m$ 行 $n$ 列的二维数组,需要满足 $m \times n$ 等于原数组的长度。如果不满足,直接返回空数组即可。
71
+
72
+ 如果满足,我们可以按照题目描述的过程,将原数组中的元素依次放入二维数组中即可。
73
+
74
+ 时间复杂度 $O(m \times n)$,其中 $m$ 和 $n$ 分别为二维数组的行数和列数。忽略答案的空间消耗,空间复杂度 $O(1)$。
71
75
72
76
<!-- tabs:start -->
73
77
@@ -110,8 +114,10 @@ class Solution {
110
114
class Solution {
111
115
public:
112
116
vector<vector<int >> construct2DArray(vector<int >& original, int m, int n) {
113
- if (m * n != original.size()) return {};
114
- vector<vector<int >> ans(m, vector<int >(n, 0));
117
+ if (m * n != original.size()) {
118
+ return {};
119
+ }
120
+ vector<vector<int >> ans(m, vector<int >(n));
115
121
for (int i = 0; i < m; ++i) {
116
122
for (int j = 0; j < n; ++j) {
117
123
ans[ i] [ j ] = original[ i * n + j] ;
@@ -125,15 +131,14 @@ public:
125
131
### **Go**
126
132
127
133
```go
128
- func construct2DArray(original []int, m int, n int) [][]int {
134
+ func construct2DArray(original []int, m int, n int) (ans [][]int) {
129
135
if m*n != len(original) {
130
136
return [][]int{}
131
137
}
132
- var ans [][]int
133
138
for i := 0; i < m*n; i += n {
134
139
ans = append(ans, original[i:i+n])
135
140
}
136
- return ans
141
+ return
137
142
}
138
143
```
139
144
@@ -147,17 +152,14 @@ func construct2DArray(original []int, m int, n int) [][]int {
147
152
* @return {number[][]}
148
153
*/
149
154
var construct2DArray = function (original , m , n ) {
150
- const result = [];
151
-
152
- if (original .length != m * n) {
153
- return result;
155
+ if (m * n != original .length ) {
156
+ return [];
154
157
}
155
-
156
- for (let i = 0 ; i < m; i++ ) {
157
- result .push (original .slice (i * n , i * n + n));
158
+ const ans = [];
159
+ for (let i = 0 ; i < m * n ; i += n ) {
160
+ ans .push (original .slice (i, i + n));
158
161
}
159
-
160
- return result;
162
+ return ans;
161
163
};
162
164
```
163
165
@@ -169,17 +171,14 @@ function construct2DArray(
169
171
m : number ,
170
172
n : number ,
171
173
): number [][] {
172
- const result = [];
173
-
174
- if (original .length != m * n ) {
175
- return result ;
174
+ if (m * n != original .length ) {
175
+ return [];
176
176
}
177
-
178
- for (let i = 0 ; i < m ; i ++ ) {
179
- result .push (original .slice (i * n , i * n + n ));
177
+ const ans : number [][] = [];
178
+ for (let i = 0 ; i < m * n ; i += n ) {
179
+ ans .push (original .slice (i , i + n ));
180
180
}
181
-
182
- return result ;
181
+ return ans ;
183
182
}
184
183
```
185
184
0 commit comments