老师,直接修改原数组的做法如何呢

来源:3-5 卡牌分组-代码演示

_玲

2019-02-19

export default (arr) => {
  arr.sort((a, b) => a - b)
  const distLen = []
  let min = Number.MAX_SAFE_INTEGER
  for (let temp = [arr[0]]; arr.length; ) {
    let init = arr[0]
    const compare = arr[1]
    if (init === compare) {
      temp.push(compare)
      arr.shift()
    } else {
      const length = temp.length
      if (length < min) {
        min = length
      }
      distLen.push([...temp])
      temp = [compare]
      arr.shift()
    }
  }
  if (min >= 2 && distLen.every(item => item.length % min === 0)) {
    return true
  } else {
    return false
  }
}

这里用arr.shift()修改了原数组。

写回答

2回答

qq_路远风95版_0

2019-02-21

[1,1,1,1,2,2,2,2,2,2]这个测试数据过不了,没考虑最小公倍数

0
2
_玲
我错了,少写了一个1…是有问题
2019-02-24
共2条回复

快乐动起来呀

2019-02-20

这个我试试,可以提交到issue区吗,课程更新完之后会优化部分代码,也会把优秀同学的代码分享给大家

0
1
_玲
已经提交了,测试用例我跑了,能通过…原理都是一致的
2019-02-20
共1条回复

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程