https://leetcode.com/problems/hand-of-straights/description/
题目大意:一个数组,和一个窗口w问能否将数组分成k组使得每组里数的个数都是w且数字连续。
解题思路:排序后,贪心的找到第一组的开头,之后去掉需要的数字,剩下的第一个就是第二组数的开头依此类推。
class Solution {
public boolean isNStraightHand(int[] hand, int w) {
int n = hand.length;
if(n%w!=0) return false;
Arrays.sort(hand);
int[] vis = new int[n];
for(int i=0;i<n;i++)
{
if(vis[i]==0)
{
int cnt =1;
int pre = hand[i],j=i+1;
vis[i]=1;
while(cnt<w)
{
if(j>=n) break;
if(pre+1 == hand[j] && vis[j]==0)
{
vis[j] =1 ;
cnt++;
pre=hand[j]; j++;
}
else j++;
}
//System.out.println(hand[i]+" "+flag);
if(cnt!=w) return false;
}
}
return true;
}
}