從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2~10為數字本身,a為1,j為11,q為12,k為13,而大、小王為 0 ,可以看成任意數字。a 不能視為 14。
示例 1:
輸入: [1,2,3,4,5]
輸出: true
示例 2:
輸入: [0,0,1,2,5]
輸出: true
限制:
先統計元素0的個數為zero
對陣列排序
然後從倒數第二個數判斷與最後乙個數差值,如果不滿足要求,則遞減zero個數,如果zero小於0,則直接返回false,否則判斷下乙個數並遞增判斷次數和差值。
時間複雜度:o(n)
空間複雜度:o(1)
class solution
sort(nums.begin(), nums.end());
int i = 3, j = 1, c = 0; //j 表示差值,c表示判斷次數
while (c < 4) else
++c;
++j;
}
return true;
}};
先排序,然後每次判斷相鄰兩數差值,如果差值大於1,則表示兩數之間需要 差值-1 個0來代替。
時間複雜度:o(n)
空間複雜度:o(1)
class solution
if (nums[i] == nums[i + 1]) return false;
zero -= nums[i + 1] - nums[i] - 1;
}return zero >= 0;
}};
劍指offer 面試題61 撲克牌順子
面試題 劍指offer 題目解答 一副撲克牌,裡面有2個大王,2個小王,隨機從中抽出了5張牌,看看能不能抽到順子,所謂順子就是五個連續的數字,如1,2,3,4,5。為了方便測試其中大 小 王可以看成任何數字,並且a看作1,j為11,q為12,k為13。現在,要求你使用這幅牌模擬上面的過程,如果隨機抽...
面試題61 劍指offer 撲克牌中的順子
題目 從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。其中2 10為數字本身,a為1,j為11,q為12,k為13,而大小王可以看成任意數字。解法 將大小王用0表示,與其他牌區分開 1.先對陣列排序 2.統計0的個數 3.比較陣列要組成順子的差與0個數 param numbers...
劍指offer 面試題61 撲克牌中的順子
開始行動,你已經成功一半了,獻給正在奮鬥的我們 從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。且大小王能夠當做任意一張牌。做這道題,首先我們需要把撲克牌抽象成計算機語言,其中2 10可以用數字2 10來表示。a為1,j為11,q為12,k為13,而大小王為0。抽象之後,我們可以...