CPP之劍指 Offer 61 撲克牌中的順子

2021-10-08 01:55:00 字數 937 閱讀 7861

從撲克牌中隨機抽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限制 陣列長...