地址 https://www.acwing.com/problem/content/77/spa
從撲克牌中隨機抽5張牌,判斷是否是一個順子,即這5張牌是否是連續的。code
2~10爲數字自己,A爲1,J爲11,Q爲12,K爲13,大小王能夠看作任意數字。blog
爲了方便,大小王均以0來表示,而且假設這副牌中大小王均有兩張。get
樣例1 輸入:[8,9,10,11,12] 輸出:true 樣例2 輸入:[0,8,9,11,12] 輸出:true
解法 插空法 先查看有多少個癩子 若是牌之間不能造成1 的等差序列 就插入一個癩子io
癩子不夠用或者有兩張相同的非癩子的牌 那麼就返回失敗class
class Solution { public: bool isContinuous( vector<int> numbers ) { if(numbers.size() != 5) return false; sort(numbers.begin(),numbers.end()); int laiziCount = 0; for(int i =0;i < numbers.size();i++){ if(numbers[i] == 0) laiziCount++; else { if(i < numbers.size()-1){ int diff = numbers[i+1] - numbers[i]; if(diff == 0) return false; if(diff == 1 ) continue; laiziCount -= diff; laiziCount++; if(laiziCount <0) return false; } } } return true; } };