题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
思路1
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
int length = numbers.size();
set<int> myset;
int min_n = numbers[0];
int max_n = numbers[0];
for(int i=0;i<length;i++)//更新min和max,让其为数组的第一个非0元素
{
if(numbers[i])
{
min_n = numbers[i];
max_n = numbers[i];
break;
}
}
for(int i=0;i<length;i++)
{
if(numbers[i]>13 || numbers[i]<0)
return false;
if(numbers[i])
{
min_n = min(numbers[i],min_n);
max_n = max(numbers[i],max_n);
if(myset.count(numbers[i])>0)//判断有没有出现过重复元素
return false;
myset.insert(numbers[i]);
}
}
if(max_n - min_n < 5)
return true;
else
return false;
}
};思路2
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
//排序
for(int i=0;i<numbers.size();i++)
{
for(int j=i+1;j<numbers.size();j++)
{
if(numbers[i]>numbers[j])
{
int tmp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = tmp;
}
}
}
int max_n = numbers[4];
int index = 0;
for(int i=0;i<numbers.size();i++)
{
if(numbers[i]>13 || numbers[i]<0)
return false;
if(!numbers[i])
index++;
}
int min_n = numbers[index];
if(index!=4)
{//判断重复数字
if(numbers[index] == numbers[index+1])
return false;
}
if(max_n - min_n < 5)
return true;
else
return false;
}
};思路1和思路2的精简代码
来源:https://blog.nowcoder.net/n/c850507eef3d42c6a524d5d0f1a51dd7
牛客刷题记录 文章被收录于专栏
记录自己的刷题记录,刷过的题的解法
腾讯云智研发成长空间 5050人发布
