扑克牌顺子
扑克牌顺子
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; } };