网站内置多语言,建设一个网站系统要多久,美食网站的建设,铜排制作 东莞题1
描述 给定一副牌#xff0c;每张牌上都写着一个整数。 此时#xff0c;你需要选定一个数字 X#xff0c;使我们可以将整副牌按下述规则分成 1 组或更多组#xff1a; 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X 2 时返回 true。 示例 1…题1
描述 给定一副牌每张牌上都写着一个整数。 此时你需要选定一个数字 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 题解
思路先计数保证对于所有i来说x都是count[i]的约数则可以分组。 gcd的递归写法 return b0? a:gcd(b,a%b)
class Solution {public boolean hasGroupsSizeX(int[] deck) {int[] nums new int[10000];for(int i 0; i deck.length; i ){nums[deck[i]] 1;}int x -1;for(int cnt: nums){if(cnt0){x x -1? cnt:gcd(x,cnt);if(x1){return false;}}}return x 2;}public int gcd(int a, int b){return b 0 ? a : gcd(b, a % b);}
}