AcWing 81. 扑克牌的顺子
原题链接
简单
作者:
王小强
,
2021-02-07 18:46:38
,
所有人可见
,
阅读 437
贡献一个C语言的版的,我记的我当初做的时候用到了等差数列的数学思想!!!
// bubbleSort 冒泡排序
void sort(int* nums, int numsSize) {
for (int i = 0; i < numsSize - 1; i++) {
for (int j = 0; j < numsSize - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
nums[j] ^= nums[j + 1];
nums[j + 1] ^= nums[j];
nums[j] ^= nums[j + 1];
}
}
}
}
bool isContinuous(int* nums, int numsSize) {
// base case
if (!numsSize) return false;
sort(nums, numsSize);
int cnt = 0; // 大小王的数量
for (int i = 0; i < 5; i++)
if (!nums[i]) ++cnt;
for (int i = cnt; i < 4; i++)
if (nums[i] == nums[i + 1]) // 有相同的牌 ...
return 0;
if (!cnt) // 没有大小王
return (nums[4] - nums[0]) / 4.0 == 1;
for (int i = cnt; i < 4; i++)
if (nums[i] + 1 != nums[i + 1])
cnt -= nums[i + 1] - nums[i] - 1;
return cnt >= 0;
}