日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer:扑克牌的顺子问题

發布時間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer:扑克牌的顺子问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LL今天心情特別好,因為他去買了一副撲克牌,發現里面居然有2個大王,2個小王(一副牌原本是54張^_^)...他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是順子.....LL不高興了,他想了想,決定大\小王可以看成任何數字,并且A看作1,J為11,Q為12,K為13。上面的5張牌就可以變成“1,2,3,4,5”(大小王分別看作2和4),“So Lucky!”。LL決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然后告訴我們LL的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0


思路:

這道題的主要要求是給定一組牌,在有0這個癩子的情況下,是否是順子!!!

千萬不要理解成,隨即抽取一組牌,為讓我們求LL能抽到順子的概率!

因此:我們可以對給定的牌進行從大到小的順序進行排序

排序完成之后遍歷查找0元素的個數,以及累計零元素之間的間隔數

也即是看看癩子(0)的個數能不能抵掉這些間隔!

還有一種情況必須考慮!就是當有對子出現的時候,那么這個序列一定不可能是順子!遇到這種情況,應當立即返回false!


思路清晰了,代碼就簡單啦!代碼如下

class Solution { public:bool IsContinuous( vector<int> numbers ) {int len = numbers.size();if(len == 0) return false;int numberofzero = 0;//0的個數;int numberofgap = 0;//間隔的個數,單位為1;sort(numbers.begin(),numbers.end()); //從小到大排序;for(int i = 0;i<len-1;++i){if(numbers[i] == 0){numberofzero++;//找出中共有多少個0;continue;}if(numbers[i] == numbers[i+1])return false;numberofgap += numbers[i+1]-numbers[i]-1; //找出總共有多少個間隔}if(numberofzero >= numberofgap)//比較0的個數和間隔的個數!return true;return false;} };

?

總結

以上是生活随笔為你收集整理的剑指offer:扑克牌的顺子问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。