扑克牌顺子

思路:

首先确定一共有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 };

 

posted @ 2019-07-20 10:00  Austin_anheqiao  阅读(913)  评论(0编辑  收藏  举报