n种类型的数组,组成m个数字组合,类型不可重复,问最多多少组

// n个类型,m个一组,类型数量为 list
const getRes = (n, m, list, index=0) => {
  list.sort((a,b) => a-b) // 正序
  const sum = list.reduce((p,c) => p+c, 0)
  const res = Array(sum).fill().map(v => [])
  while(list.length) {
    const cur = list.length
    const curNum = list.pop()
    for(let i=0; i<curNum; i++) {
      while(res[index+i].length >= m) index++
      res[index+i].push(cur)
    }
  }
  return res.reduce((p,c) => {
    if(c.length === m) return p+1
    return p
  },0)
}

  console.log(getRes(5, 3, [1,2,3,4,5]))
  console.log(getRes(5, 4, [1,2,3,4,5]))
  console.log(getRes(10,9, [1,19,13,4,16,12,5,8,14,6]))

全部评论
这个是你的笔试题?
点赞
送花
回复 分享
发布于 2022-09-18 16:13 陕西

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务