劍指offer 撲克牌中的順子

2021-10-07 03:18:24 字數 560 閱讀 1701

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

這道題乙個算是屬於巧解數學問題,也可以看做是貪心演算法。如果按照正常的思路對陣列進行遍歷,如何插入刪除資料會非常的麻煩,所以要先找到數學規律。我們發現如果這五個數除了0以外不重複,那麼需要多少張0才能成為順子呢?

1.先將陣列進行排序,這樣相鄰兩數相減就不會出現負數。

2.進行遍歷,如果遇到了0,用計數器記錄0的個數;

3.如果遇到相同的數字,直接返回false,因為這樣怎麼都不會成為順子;

4.對於不為0的數字,後面的減前面的數字再減1,即為這兩個數成為順子需要的0的個數,然後把所有的數字需要的統計起來,比0的個數大那就是不行,返回false,如果小於等於cnt,那就返回true。

bool

iscontinuous

( vector<

int> numbers )

return cnt>=0;

}

劍指offer 撲克牌順子

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

劍指offer 撲克牌順子

劍指offer 撲克牌順子.cpp 定義控制台應用程式的入口點。題目描述 輸入五個數字,0可以代表任何數,問這五個數字是否是乙個順子 思路 排序後計算非0的相鄰兩個數之間的距離 gap 然後與0 大小王 的數量進行比較,看是否小於這個count include stdafx.h include ve...

劍指offer 撲克牌順子

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