Problem Statement
You are playing a game of cards in which the number of straights, i.e., sets of consecutive-valued cards, determines the strength of your hand. You will be given a int[] hand, where the i-th element of hand is the number of cards of value i in your hand. You should return the number of straights of length k. For example, suppose you have the hand:
- 2 of spades
- 2 of diamonds
- 2 of clubs
- 3 of clubs
- 4 of hearts
- 4 of clubs
- 2 of spades, 3 of clubs
- 2 of diamonds, 3 of clubs
- 2 of clubs, 3 of clubs
- 3 of clubs, 4 of hearts
- 3 of clubs, 4 of clubs
Definition
- Class:
- Straights
- Method:
- howMany
- Parameters:
- int[], int
- Returns:
- int
- Method signature:
- int howMany(int[] hand, int k)
- (be sure your method is public)
Notes
- Straights do not wrap around: if hand is {1,0,0,0,0,0,0,0,0,0,0,0,1}, you have no straights of length 2.
Constraints
- hand will contain exactly 13 elements.
- Each element of hand will be between 0 and 4 inclusive.
- k will be between 1 and 13 inclusive.
Examples
{0,3,1,2,0,0,0,0,0,0,0,0,0}2
Returns: 5
The example given.{1,1,1,1,1,1,1,1,1,1,1,1,1}5
Returns: 9
Say hand[0] references Aces. There are 9 ways to make a straight of length 5: Ace-Five up to Nine-King.{4,4,4,4,4,4,4,4,4,4,4,4,4}13
Returns: 67108864
{4,0,4,0,4,0,4,0,4,0,4,0,4}2
Returns: 0
Straights do not wrap around; we have no straights here.{1,2,3,4,1,2,3,4,1,2,3,4,1}1
Returns: 31