刷演算法 撲克牌順子

2021-09-13 12:21:06 字數 1223 閱讀 7798

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可以被替換為任意數字。

例如:[0,0,1,2,3]可以看做[1,2,3,4,5]

[0,1,3,4,5]可以看做[1,2,3,4,5]

但是類似於[0,1,4,5,6]就不行,因為4和1之間需要兩個數字來補,但是只有乙個0,所以不能構成順子。

所以總結一下:

序列中有相同的數字,即對子的出現,則返回false

如果出現了n個0,說明可以由n個數字可以被補上,這個時候需要檢查整個序列需要幾個數字來補,記為m,如果m大於n,則返回false,否則返回true。例如:

陣列[0,0,2,4,7],遍歷序列後需要(4-2-1)+(7-4-1)=3個數字來補,但是0的個數是2,所以補不夠,返回false

function iscontinuous(numbers)

)

var count = 0; // 有幾個王

var distance = 0; // 差值

if(numbers[3] === 0)

return true;

else if(numbers[2] === 0)

count = 3;

else if(numbers[1] === 0)

count = 2;

else if(numbers[0] === 0)

count = 1;

for(var i = count;i < numbers.length-1;i++)

if(distance > count)

return false;

else

return true;

}

刷題 撲克牌順子

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

撲克牌順子

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

撲克牌順子

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