算法题(4)

简介: 算法题(4)

题目

给定一副牌,每张牌上都写着一个整数。
此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:
每组都有 X 张牌。
组内所有的牌上都写着相同的整数。
仅当你可选的 X >= 2 时返回 true。
链接:https://leetcode.cn/problems/x-of-a-kind-in-a-deck-of-cards

解题

function(deck) {
   
    if(deck.length <=1){
   
        return false;
    }
    let len = deck.length;
    let flag = true;
    let arr = [];
    deck.sort();
    for(let i=2;i<=len;i++){
   
        arr = [];
        flag = true;
        let count = deck.length/i;
        //是整数再循环
        if(String(count).indexOf('.') ===-1){
   
            for(let j=0;j<count;j++){
   
              let item = deck.slice(j*i,j*i+i);
              arr.push(item);
          }
          //判断arr里面里面的每一项是否都相等
          for(let k=0;k<arr.length;k++){
   
              if(new Set(arr[k]).size !==1){
   
                flag = false;
                break;
              }
          }
          if(flag){
   
            return true;
          }
       } 
    }
    return false;
};

解析

1:按题目如果数组的数量小于2,则返回false。
2:把数组分组,可以分成的情况是2-数组的长度。
3:然后分别讨论这些情况,例如按2的长度把数组分组。如果数组的长度可以不能按2进行平均分,那么就不符合要求,重复下上个操作。如果符合操作,那么就开始给数组分组。
4:分组结束后,再判断数组中的每一项是否都相等。

相关文章
|
2月前
|
算法 机器人
算法题(3)
算法题(3)
40 5
|
算法
Warshall算法
Warshall算法
231 0
Warshall算法
|
JavaScript 算法 前端开发
vueDiff 算法解读
前言 在面试中谈到 vue 源码,一般都会扯扯 diff 算法,而这个 diff 又在网上传的神乎其神的,说是提升了页面更新性能,我们一起看看到底咋回事吧
|
机器学习/深度学习 算法 TensorFlow
秒懂算法 | RIB算法
结合微观行为序列的推荐(recommendation with sequences of micro behaviors, RIB)在物品序列的基础上,加入了对异构行为和停留时间的建模。对异构行为的建模使得模型能够捕捉更加细粒度的用户兴趣,而用户在某个页面上的停留时间则反映了用户对这个页面的感兴趣程度,并且停留时间越长,购买商品的转化率通常也会越高。
263 0
秒懂算法 | RIB算法
|
存储 机器学习/深度学习 人工智能
秒懂算法 | 分块算法
本篇内容包括了分块算法的思想的介绍、分块算法复杂度的分析以及相关例题。
341 0
秒懂算法 | 分块算法
|
存储 算法 测试技术
《算法》世界
一.什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个算法必须具有:有穷性、确切性、输入项、输出项、可行性五个性质。
216 0
《算法》世界
|
算法 前端开发 JavaScript
算法的认识
算法的认识
算法的认识
|
机器学习/深度学习 算法 搜索推荐
C#算法大全(下)
今天有人想让我搞一期C#算法大全。算法就算法,安排上!
|
算法
算法技巧总结
算法技巧总结
1381 0