思路:刚开始不明白题意,参考k神思路
将顺子问题转化为nums[4] - nums[j] < 5 非常巧妙
先对nums进行排序, 如果nums中 存在重复的牌(joker除外),那么返回fasle
另外,如果nums中不含0(即joker)时, nums[4] - nums[0] < 5 说明nums是顺子
当nums中包含0时, nums[4] - nums[j] < 5 时,(其中j表示首个不为joker的数字在数组中的索引)说明nums是顺子
class Solution {
public:
bool isStraight(vector<int>& nums) {
sort(nums.begin(), nums.end());
int jocker = 0;
for(int i = 0; i < 4; i++)
{
if(nums[i] == 0)
{
jocker++;
}
else
{
if(nums[i] == nums[i+1]) return false;
}
}
return (nums[4] - nums[jocker] < 5);
}
};