- 写继续循环的一种方式是可以借鉴的。
- 排序后算牌和牌之间的差值,最后必须减1,这才和0得数量等挂钩。
- 注意判断条件 interrapt<=zero_num 就可以证明有串子。
- 相邻牌相同得拍不算。
class Solution { public: bool IsContinuous( vector<int> numbers ) { if(!numbers.size()) return false; //排序 sort(numbers.begin(), numbers.end()); int zero_num = 0;//统计大小王数量 int i = 0; while(numbers[i] == 0) zero_num++, i++;//两个连续的用”,“号隔开。 int interrapt = 0;//记录五张牌中最大值max到最小值min的距离 //这种结构结构可以遍历剩余得元素 for(; i< 4; i++){//因为是彼此之间做差值,一直遍历到倒数第二个 if(numbers[i]==numbers[i+1]) return false; //出现相同的扑克牌 interrapt += numbers[i+1]- numbers[i] -1;//减一,需要判断我需要有几个王牌来补全。 } if(interrapt<=zero_num){// [3,0,0,0,0] 这种情况,所以要大于 return true; }else{ return false; } } };