-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.js
36 lines (35 loc) · 922 Bytes
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* @param {number[][]} nums
* @param {number} r
* @param {number} c
* @return {number[][]}
*/
var matrixReshape = function (nums, r, c) {
if (r * c !== nums.length * nums[0].length) {
return nums
}
let ans = []
let cnt = 0
let row = []
for (let i = 0; i < nums.length; i++) {
for (let j = 0; j < nums[i].length; j++) {
cnt++
if (cnt === c + 1) {
ans.push(row)
row = []
cnt = 1
}
let item = nums[i][j]
row.push(item)
}
}
ans.push(row)
return ans
}
if (process.env.LZS) { // local test
const assert = require('assert')
assert.deepStrictEqual(matrixReshape([[1, 2], [3, 4]], 1, 4), [[1, 2, 3, 4]])
assert.deepStrictEqual(matrixReshape([[1, 2], [3, 4]], 4, 1), [[1], [2], [3], [4]])
assert.deepStrictEqual(matrixReshape([[1, 2], [3, 4]], 4, 2), [[1, 2], [3, 4]])
assert.deepStrictEqual(matrixReshape([[1]], 1, 1), [[1]])
}