题目描述
- 从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的
- 2~10 为数字本身,A为1,J为11,Q为12, K为13,而大、小王可以看成任意数字
题目解读
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size() < 1){
return false;
}
// 排序
sort(numbers.begin(), numbers.end());
int zero = 0;
int gap = 0;
for(int i=0; i < numbers.size()-1; i++){
if(numbers[i] == 0){
zero += 1;
}else{
if(numbers[i+1] - numbers[i] - 1 > 0){
gap = gap + numbers[i+1] - numbers[i] - 1;
}
// 如果是对子,则直接返回 false
if(numbers[i+1] == numbers[i]){
return false;
}
}
}
return zero < gap ? false : true;
}
};
int main(){
Solution ss;
vector<int> numbers;
// int a[] = {0, 1, 3, 4, 5};
int a[] = {1, 2, 8, 4, 5};
for(int i=0; i < 5; i++){
numbers.push_back(a[i]);
}
bool result = ss.IsContinuous(numbers);
cout<<result<<endl;
}
总结展望
网友评论