题目描述:
从扑克牌中抽5张,判定是否连续,其中大小王为0,A为1,JQK分别为11-13.
思路:
对输入的数组进行升序排列,计算0的个数和非零数间的间隔之和
class Solution { public: bool IsContinuous( vector<int> numbers ) { if(numbers.empty()||numbers.size()!=5) return false; sort(numbers.begin(),numbers.end()); //从小到大 int countzero = 0; for(int i=0;i<numbers.size();i++){ if(numbers[i]==0) countzero++; } int countgap = 0; int start = countzero; int next = start + 1; if(next==numbers.size()) return true; while(next<numbers.size()){ if(numbers[start]==numbers[next]) return false; countgap += numbers[next++]-numbers[start++]-1; } if(countgap == countzero) return true; return false; } };