问题描述
现在桌子上有一堆飞行棋棋子,有 N 个,每个棋子上标有数字序号,现在想让你帮忙给这堆飞行棋分成 M 组,需要满足:
- 每个分组只能包含 5 个棋子
- 每个棋子只能出现在一个分组里
- 每个分组里的棋子的数字序号相同
请问可以完成上述分组么?
思路
题目说的很清楚,必须是五个相同的数字分为一组,那么直接对飞行棋数组排序,如果能够分组的话它们肯定是五五相等的,如果有一个不相等直接返回false,从前往后枚举一遍即可
刚开始想用map存储的,可是一思考发现这题格外的简单,直接排个序就可以解决 `
public static String solution(int[] nums) {
if(nums.length%5!=0){//数字个数必须是5的倍数
return "false";
}
Arrays.sort(nums);//排序
for(int i=0;i<nums.length;i+=5){//每次判断5个数字,如果数字有不相同的直接返回false
for(int j=i+1;j<=i+4;j++){
if(nums[j]!=nums[i])
return "false";
}
}
return "true";
}`