劍指Offer 面試題61 撲克牌中的順子

2022-08-29 17:00:25 字數 894 閱讀 2174

從撲克牌中隨機抽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。抽象之後,我們可以...