扑克牌顺子

扑克牌顺子

http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4

可以用C++的set来实现,简单来说就是要是5个数字,最大和最小差值在5以内,并且没有重复数值。用一个set来填充数据,0不要放进去。set的大小加上0的个数必须为5个。另外,set中最后一个元素和第一个元素的差值必须小于5(C++ set 中的元素有序排列)。set 中第一个元素为 *st.begin(),但最后一个元素的值并不是 *st.end()。 写成 *(st.end()-1)会报错!所以用变量 max 来记录 set 中的最后一个元素。代码如下:

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if (numbers.size() < 5 || numbers.size() > 5) {
            return false;
        }
        set<int> st;
        set<int>::iterator it;
        int num = 0;
        for (int i = 0;i < numbers.size();++i) {
            if (numbers[i] == 0) num++;
            else st.insert(numbers[i]);
        }
        int max;
        for (it = st.begin();it != st.end();++it) {
            max = *it;
        }
        if ((num + st.size()) != 5) return false;

        if (max - *st.begin() < 5) return true;
        return false;
    }
};
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务