当前位置: 首页 > news >正文

LeetCode.914 卡牌分组

题目要求 给定一副牌,每张牌上都写着一个整数。 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X >= 2 时返回 true。

示例 1:

输入:[1,2,3,4,4,3,2,1]
输出:true
解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]
复制代码

示例 2:

输入:[1,1,1,2,2,2,3,3]
输出:false
解释:没有满足要求的分组。
复制代码

示例 3:

输入:[1]
输出:false
解释:没有满足要求的分组。
复制代码

示例 4:

输入:[1,1]
输出:true
解释:可行的分组是 [1,1]
复制代码

示例 5:

输入:[1,1,2,2,2,2]
输出:true
解释:可行的分组是 [1,1],[2,2],[2,2]
复制代码

提示:

1 <= deck.length <= 10000
0 <= deck[i] < 10000
复制代码

题目连接: leetcode-cn.com/problems/x-…

本题在 LeetCode 中定义为简单,就是求最大公约数的问题,能用到的知识有 【数学】【数组】。 解题思路:求数组频数的最大公约数,如果公约数小于2 则是False 也就是 X(a+b+c) % X === 0

一般多个数的最大公约数算法

function gcd(a, b) {
    return b > 0 ? gcd (b, b % a) : a
}
复制代码

代码

const hasGroupsSizeX = deck => {
    let map = {}
    for(let item of deck) {
        map[item] = ~~map[item] + 1
    }
    
    const min = Math.min(...Object.values(map))

    if(min < 2) return false
  
    for (let index of Array(min).fill().keys()) {
        if(index === 0) continue
        if(Object.values(map).every(item => item % (index + 1) === 0)) {
            return true
        }
    }
  
    return false
}
复制代码

相关文章:

  • 本周学习小结(25/03 - 31/03)
  • Beetl 提供俩种方式来显示实现局部更新
  • core_framework —— 基于libev的轻量级lua网络开发框架
  • MyCAT水平分库
  • 织梦CMS模板中dede标签使用php和if判断语句的方法
  • 2019第十四届中国竞争情报国际年会将于4月在上海召开
  • 移动互联网下半场,iOS开发者如何“高薪”成长?
  • 判断是手机端还是PC端的代码
  • linux分区方案
  • 邮件加密之SMIME
  • 微信公众平台生成二维码海报是如何做到的?
  • idea thymeleaf 表达式模板报红波浪线
  • 呼叫中心系统常见的数据对接接口方式
  • JAVA8给我带了什么——lambda表达
  • websocket 二合一
  • 【知识碎片】第三方登录弹窗效果
  • CODING 缺陷管理功能正式开始公测
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • js递归,无限分级树形折叠菜单
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • node.js
  • nodejs调试方法
  • redis学习笔记(三):列表、集合、有序集合
  • REST架构的思考
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spring Boot快速入门(一):Hello Spring Boot
  • windows下使用nginx调试简介
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 前端面试总结(at, md)
  • 使用agvtool更改app version/build
  • 提醒我喝水chrome插件开发指南
  • 一个完整Java Web项目背后的密码
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 做一名精致的JavaScripter 01:JavaScript简介
  • const的用法,特别是用在函数前面与后面的区别
  • linux 淘宝开源监控工具tsar
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云服务器购买完整流程
  • ​【已解决】npm install​卡主不动的情况
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #、%和$符号在OGNL表达式中经常出现
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1) caustics\
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)fread与fwrite详解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (四)汇编语言——简单程序
  • (淘宝无限适配)手机端rem布局详解(转载非原创)