题目链接
思路:
-
首先生成数组 js new Array 生成的是稀疏数组 会导致为 undefined
-
根据规律可知,我们除以 rowsCount 得到 列 的位置,根据这个 列 的位置 ,我们可以 看这个列 是 奇数还是 偶数 如果是偶数 代表 求余 rowsCount 的内容,是正序排序的,如果是奇数,则代表 是 逆序排序的(这是规律)
-
因此 我们除以 rowsCount 的值 作为列的下标,再根据 奇偶性质 得到 行的下标即可
注意:区分行列
代码:
javascript
/**
* @param {number} rowsCount
* @param {number} colsCount
* @return {Array<Array<number>>}
*/
Array.prototype.snail = function (rowsCount, colsCount) {
if (this.length !== rowsCount * colsCount) return []
let res = Array(rowsCount).fill().map(() => Array(colsCount))
for (let i = 0; i < this.length; i++) {
let row = Math.floor(i / rowsCount), col = i % rowsCount;
console.log(row, col)
if (row % 2 === 0) {
res[col][row] = this[i]
}
else {
res[rowsCount - 1 - col][row] = this[i]
}
}
return res
}
/**
* const arr = [1,2,3,4];
* arr.snail(1,4); // [[1,2,3,4]]
*/