题解 | #扑克牌顺子#
扑克牌顺子
https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
#include <algorithm>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型vector
* @return bool布尔型
*/
bool IsContinuous(vector<int>& numbers) {
// write code here
sort(numbers.begin(), numbers.end());
// 记录大小王的个数
int count = 0;
// 记录当前要比对的牌面
int temp = -1;
for (int i = 0; i < numbers.size() - 1; ++i) {
if (temp < numbers[i]) {
temp = numbers[i];
}
// 有四个大小王,必定是顺子
if (count == 4) {
return true;
}
if (numbers[i] == 0) {
count++;
}
// 判断当前值与下一个值是否连续
// 不连续则消耗一个大小王的个数来补充一次缺失的下一位
else if (temp + 1 != numbers[i + 1]) {
if (count == 0) {
return false;
} else {
temp += 1;
count--;
// 用补充的牌面与之前牌面的下一位重新比对,看是否能完成填充
i--;
}
}
}
return true;
}
};