题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
扑克牌顺子思路:
首先对数组进行排序,找到其第一个不为0的下标i,判断如果此下标大于等于数组尾下标,说明数组一定可以成为顺子;
其次,计算最大值和不为0的最小值中间需要的数个数和当前已经有的个数的差值,如果这个数是小于等于i的,那么0的个数足够将数组变为顺子,否则不行。
即(numbers[numbers.size()-1]-numbers[i]-1)-(numbers.size()-1-i-1)<=i
class Solution { public: bool IsContinuous( vector<int> numbers ) { //auto f=find(numbers.begin(),numbers.end(), sort(numbers.begin(),numbers.end()); int i=0; while(numbers[i]==0) i++; if(i>=numbers.size()-1) return true; if((numbers[numbers.size()-1]-numbers[i]-1)-(numbers.size()-1-i-1)<=i) return true; else return false; } };