從撲克牌中隨機抽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
題目分析:
根據題意,函式名暫定為isstraight,函式輸入是一維陣列且大小為5,vector& nums,輸出是0或1。
bool
isstraight
(vector<
int>
& nums)
函式內部需要判斷輸入的陣列中5個數是不是連續遞增。
1.先將陣列排序,排序後使用變數num找出序列中0 的個數。
2.跳過陣列中值是0元素後,求非零元素間的差值,只要保證陣列中0的個數與非零元素間做差的次數的和 大於等於非零元素間的差值即為順子!例如:[0,0,1,2,5]
0的個數是2,非零元素做差次數是2,非零元素差值和是4,故而是順子。
3.如果陣列中當前值和後面緊鄰值相等那不是順子。
class
solution
for(
;i < nums.
size()
-1;i++
) del +
=(nums[i +1]
- nums[i]);
num++
;//此時num也要加一
}return num >= del ?
true
:false;}
};
劍指Offer 61 撲克牌中的順子
題目描述 ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高興了,他想了想,...
劍指 Offer 61 撲克牌中的順子
題目如所示。這道題目,其實一看到陣列就能判斷是不是能成為順子,關鍵是要把人的思維轉換成計算機的語言。此題主要用到了三個邏輯來判斷。利用arrays.sort 將陣列排序,便於迴圈判斷。判斷陣列中是否有對子出現,若有對子 兩個數一樣 則肯定不能成為順子。表現為,判斷陣列中前後兩個數大小是相等。計算出陣...
劍指 Offer 61 撲克牌中的順子
總結 從撲克牌中隨機抽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限制 陣列長...