扑克牌顺子
思路:
首先确定一共有5张牌,最多可以有四个王,王用0表示。
先排序,找出0的个数;
从第一个非0的数字开始遍历,两数之间的差值用0来代替,当0用完之后还有其他的数字之间差值大于1的,那就返回false。
碰到相同的数字返回false;
1 class Solution { 2 public: 3 bool IsContinuous( vector<int> numbers ) { 4 if(numbers.size()==0) return false; 5 sort(numbers.begin(),numbers.end()); 6 int count=0; 7 for(int i=0;i<4;i++){ 8 if(numbers[i]==0) count++; 9 else break; 10 } 11 int pre=numbers[count]; 12 for(int j=count+1;j<numbers.size();j++){ 13 int cha = numbers[j]-pre; 14 if(cha==0) return false; 15 else if(cha>1) count-=cha-1; 16 if(count<0) return false; 17 pre=numbers[j]; 18 } 19 return true; 20 } 21 };