算法题(4)

开发者 2024-9-9 08:01:16 119 0 来自 中国
标题

给定一副牌,每张牌上都写着一个整数。
此时,你必要选定一个数字 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:分组竣事后,再判断数组中的每一项是否都相称。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 11:11, Processed in 0.152596 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表