题解 | #扑克牌顺子#
扑克牌顺子
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
牛客刷题记录 文章被收录于专栏
记录自己的刷题记录,刷过的题的解法