這題我第一思路是對數量從大到小排序,並記錄0的個數逐個比較,第乙個數是最大的,然後比第二個是不是比第乙個小1,一直迴圈比到第五個。中間如果不是就問有幾個0,把不符合的位置用0補上並將0變為符合的數,然後對0的個數減一,再比下乙個,如果0用完了就返回f,如果能一直到最後乙個就返回t。
但這種方法有點繁瑣,就有了另乙個方法。先上**:
class
solution
:def
iscontinuous
(self, numbers)
:# write code here
ifnot numbers:
return
false
while
0in numbers:
numbers.remove(0)
a =len(numbers)
c =max(numbers)
d =min(numbers)
b =set(numbers)
if a==
len(b)
:if c - d <5:
return
true
else
:return
false
else
:return
false
我們先把不是5個數的拿出來肯定不是順子。再進行正常的判斷。首先我把0數列裡的0都去掉。再計數看看現在數列還有幾個數。在對這個數列去重後計數。如果這兩個計數結果不同說明數列有重複的數,那一定不是順子。當沒重複的數時,我們找數列的max和min。假設有2個0,如果是順子,那順子最大的數一定比最小的數大4,如果恰好max或者min被0替代那兩個的差一定小於4,舉個例子(1,2,0,0,4)這是一種,最後一種是(1,2,3,0,0)都是順子。但如果大於4(1,2,0,0,6)一定不行。所以有了這樣的判斷。 劍指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不高興了,他想了想,...