请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

感觉这样也可以的,效率怎么样?

export default (arr) => {
arr.sort((a, b) => a - b)
let min = Number.MAX_SAFE_INTEGER
const distLen = []
for (let i = 0, tmpLen = 1; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] === arr[i]) {
tmpLen++
} else {
if (tmpLen < min) {
min = tmpLen
}
distLen.push(tmpLen)
i = j
break
}
}
}
return distLen.every(num => (num % min === 0))
}

感觉这样也是可以的,效率怎么样呢?

正在回答 回答被采纳积分+3

2回答

提问者 木南1988 2019-02-19 16:48:26

var hasGroupsSizeX = function(deck) {

  const countMap = {};

  deck.forEach((num) => {

    if (countMap[num] === undefined) countMap[num] = 0

    countMap[num] = countMap[num] + 1

  })

  const distLen = Object.values(countMap)

  const isSingle = !!~distLen.indexOf(1)

  

  const hasSame = (nums = []) => {

    const min = Math.min.apply(null, nums)

    if (nums.every((num) => (num % min === 0))) return true

    for (let i = 2; i <= Math.floor(min / 2); i++) {

      if (nums.every(numItem => (numItem % i === 0))) {

        return true

      }

    }

    return false

  }

  if (isSingle) return false

  return hasSame(distLen)

};

我把漏洞修复了下

0 回复 有任何疑惑可以回复我~
快乐动起来呀 2019-02-15 21:14:09

这个和源代码原理是一样的,只是写法不同,这个写法很赞

0 回复 有任何疑惑可以回复我~
  • 提问者 木南1988 #1
    var hasGroupsSizeX = function(deck) {
      const countMap = {};
      deck.forEach((num) => {
        if (countMap[num] === undefined) countMap[num] = 0
        countMap[num] = countMap[num] + 1
      })
      const distLen = Object.values(countMap)
      const isSingle = !!~distLen.indexOf(1)
      
      const hasSame = (nums = []) => {
        const min = Math.min.apply(null, nums)
        if (nums.every((num) => (num % min === 0))) return true
        for (let i = 2; i <= Math.floor(min / 2); i++) {
          if (nums.every(numItem => (numItem % i === 0))) {
            return true
          }
        }
        return false
      }
      if (isSingle) return false
      return hasSame(distLen)
    };
    
    之前的还是有漏洞 我又重新优化了一下
    回复 有任何疑惑可以回复我~ 2019-02-19 16:47:56
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号