面試題48 撲克牌的順子

2021-07-09 10:51:20 字數 725 閱讀 6660

題目:

從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2到10是數字本身,a為1,j為11,q為12,k為13,而大小王可以看成任意數字。

思路:除了大小王以外,其他的牌都可以用數字代替,因此我們用0來代替大小王。

可以先將數字排序,如果所有數字都是連續的,則是順子。

如果不是連續的,我們看是否有大小王,然後代替到對應位置即可。

注意,如果有相同的數字,則不可能是順子。

快速排序,時間複雜度為o(nlgn)

也可以用hash表來排序(數字在0-13之間),時間複雜度為o(n)。

#include #include #include #include #include #include #include //for hashtable  

#include #include #include #include using namespace std;

using namespace std;

bool iscontinuous(vectornums)

return (numofgap > numofzero) ? false : true;

}int main()

; vectornums(arr, arr + 5);

cout << iscontinuous(nums) << endl;

return 0;

}

面試題61 撲克牌順子

題目描述 ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高興了,他想了想,...

面試題44 撲克牌的順子

題目 從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2 10為數字本身,a為1,j為11,q為12,k為13,而大 小王可以看成任意數字。思路 可以把5張牌看做乙個陣列,大小王設為0。然後對陣列進行排序,看陣列的數字是不是連續的,因為0可以看做任意數字,所以如果相鄰兩個數字之間...

面試題44 撲克牌的順子

題目 從撲克牌中隨機抽取5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2 10為數字本身,a為1,j為11,q為12,k為13,而大王小王可以看成任意數字。分析 我們用0來表示大王和小王。判斷5個數字是否是連續的有如下三步 1.將陣列排序 2.統計陣列中0的個數 3.統計排序之後的陣列中相鄰數...