以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
131. 实现_.chunk()
解法一:使用splice方法和循环
思路:先根据size计算需要分割成几组,然后循环这么多次,在每次循环中使用splice方法截取需要的数组片段,并把截取后的结果添加到result数组中。
function chunk(arr, size) { if (size <= 0) { return [] } const result = [] const len = Math.ceil(arr.length / size) // 需要分割成的组数 for (let i = 0; i < len; i++) { result.push(arr.splice(0, size)) } return result}
解法二:使用slice方法和递归
思路:每次递归截取需要的数组片段,并把截取后的结果添加到result数组中,直到arr数组长度为0。
function chunk(arr, size) { if (size <= 0) { return [] } if (arr.length === 0) { return [] } const result = [] result.push(arr.slice(0, size)) return result.concat(chunk(arr.slice(size), size))}
两种解法的时间复杂度都为O(n),其中解法一的空间复杂度为O(n),解法二的空间复杂度为O(n)~O(n^2)。