题解 | #扑克牌顺子#
扑克牌顺子
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; } };