/**
* 扑克牌顺子
* 先排序,再统计0的个数,再统计空缺的个数
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if (numbers.size() < 5) {
return false;
}
sort(numbers.begin(), numbers.end());
unsigned int numof0 = 0;
for (auto it = numbers.begin(); it != numbers.end(); it++) {
if (*it == 0) {
numof0 ++ ;
}
}
//遍历数组,找到并统计空缺的(非连续的)个数
int numofblank = 0;
for (size_t i = numof0; i < numbers.size()-1; i++) {
//前一个位置
int first = i;
int second = i+1;
//!!!!如果相邻两项相等,则返回false,肯定不为顺子!!!!
if (numbers[first] == numbers[second]) {
return false;
}
int diff = numbers[second] - numbers[first];
if (diff > 1) {
numofblank += diff -1;
}
}
return (numofblank <= numof0) ? true : false;
}
};
int main(int argc, char const *argv[]) {
vector<int> intvec = {0,0,0,1,1};
bool result = false;
Solution s;
result = s.IsContinuous(intvec);
std::cout << result << std::endl;
return 0;
}
扑克牌顺子
最新推荐文章于 2022-06-06 21:11:30 发布