题解 | #扑克牌顺子#

扑克牌顺子

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

牛客刷题记录 文章被收录于专栏

记录自己的刷题记录,刷过的题的解法

全部评论

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务