剑指 Offer 61 扑克牌中的顺子
概述
https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/
如果没有大小王的话,我们直接求和算出中间值,配合哈希表查一下是否存在就好了。
排序法
实现的时候注意牌重复的情况。
class Solution {
public:
bool isStraight(vector<int>& nums) {
sort(nums.begin(), nums.end());
int kingNum = 0;
int last = -1;
for (auto n : nums) {
if (n == 0) {
kingNum ++;
} else {
if (last == -1 || last + 1 == n) {
last = n;
} else {
if (last == n) return false;
if (n - last - 1 <= kingNum) {
kingNum -= n - last - 1;
last = n;
continue;
} else {
return false;
}
}
}
}
return true;
}
};
Links: sword-offer-61