力扣——卡牌分组

原题如下
卡牌分组
卡牌分组
手撸代码

class Solution{
	public boolean hasGroupsSizeX(int[] deck){
//因为在题目中,deck中扑克的种类不会超过10000
		int[] count = new int[10000];
//得到的count数组是,以deck的数值为下标,以同种数值出现次数为值
		for(int num : deck)
			count[num]++;
		int x = 0;
		for(int num : count){
//忽略掉空(即等于0)的数组部分
			if(num > 0){
//本题的核心就是,是否有一个大于等于2的数,可以作为deck中每种牌数量的最大公约数
				x = gcd(x , num);
//如公约数出现了1,则代表不符合题意(因为1是所有数字的公约数)
				if(x == 1)
					return false;
			}
		}
//最后判断这个公约数是否是大于等于2
		return x >= 2;
	}
//用递归写的欧几里得辗转相除法,来获取公约数
//似乎python中的math可以直接用
	public int gcd(int a,int b){
		return b==0 ? a :gcd(b , a % b);
	}
}

最近忽然意识到得准备考研了,今晚上看了一些求极限的公式,发现看似不同的公式,竟然有着千丝万缕的联系

山顶只有一个,但通往山顶的路有无数条,找出最优美的那条,就是所有数学家的心愿
——《嫌疑人X的献身》

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值