题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
map<int, int>hashMap;//key的含义为数组的值,value的含义为出现的次数
int max=-1,min=2147483647;
int count=0;//记录五个数里面0出现的次数
for(int i=0;i<numbers.size();i++){
if(numbers[i]!=0&&hashMap.find(numbers[i])!=hashMap.end())
return false;//某个数重复出现的话肯定不可能组成顺子
else if(numbers[i]==0)
count++;
else {
hashMap[numbers[i]]++;
max=max>numbers[i]?max:numbers[i];//找到五个数里面的最大值最小值
min=min<numbers[i]?min:numbers[i];
}
}
if(count==4)
return true;
if(max-min+1==5)
return true;
else if(max-min+1>5)
return false;
else{
if(max+count-min+1>=5)
return true;
else return false;
}
}
};
public:
bool IsContinuous( vector<int> numbers ) {
map<int, int>hashMap;//key的含义为数组的值,value的含义为出现的次数
int max=-1,min=2147483647;
int count=0;//记录五个数里面0出现的次数
for(int i=0;i<numbers.size();i++){
if(numbers[i]!=0&&hashMap.find(numbers[i])!=hashMap.end())
return false;//某个数重复出现的话肯定不可能组成顺子
else if(numbers[i]==0)
count++;
else {
hashMap[numbers[i]]++;
max=max>numbers[i]?max:numbers[i];//找到五个数里面的最大值最小值
min=min<numbers[i]?min:numbers[i];
}
}
if(count==4)
return true;
if(max-min+1==5)
return true;
else if(max-min+1>5)
return false;
else{
if(max+count-min+1>=5)
return true;
else return false;
}
}
};