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以為各個數之間的間隔並累加起來,若最後這個數大於大小王的數則不可能形成順子,若小於等於的話則可以形成順子。
class
solution
if(numbers[i]
==numbers[i+1]
)return
false
; dis+
=numbers[i+1]
-numbers[i]-1
;}if(dis>jokers)
return
false
;return
true;}
};
每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮物,並且不再回到圈中,從他的下乙個小朋友開始,繼續0…m-1報數…這樣下去…直到剩下最後乙個小朋友,可以不用表演,並且拿到牛客名貴的「名偵探柯南」典藏版(名額有限哦!!_)。請你試著想下,哪個小朋友會得到這份禮品呢?(注:小朋友的編號是從0到n-1)
如果沒有小朋友,請返回-1
這道題目很多人用數學歸納法推導出了乙個公式進行求解,但是我認為題目的本意還是要讓我們來合理建模模擬這個過程。
最適合的模擬方法就是用鍊錶來模擬了,依次將小朋友的序號放入鍊錶中,然後在只剩乙個小朋友之前,不斷地將第m個同學erase。用乙個指標指向erase後所在的位置,要注意的是只要有指標移動,就一定要判斷是否移動到了容器後面的位置,如果是的話就賦值為容器的第乙個位置,以此來模擬環的過程。最後指標會指向最後乙個孩子。
class
solution
list<
int>
::iterator cur = circle.
begin()
;while
(circle.
size()
>1)
list<
int>
::iterator next =
++cur;
cur--;if
(next==circle.
end())
next=circle.
begin()
; circle.
erase
(cur)
; cur=next;
}return
*cur;}}
;
劍指 offer 刷題記錄
任誰都躲不過找工作的問題,好希望能多準備一些時間,奈何時間不等人,每天刷幾道題,並且記錄下來吧 def replacespace s write code here num space 0 new s for i in range len s if i num space 1 for i in ra...
劍指offer刷題記錄
遞迴法 鍊錶的後續遍歷,並用self.k來記錄倒數節點的位置,找到了就返回找到的節點,否則返回none coding utf 8 class listnode def init self,x self.val x self.next none class solution def init self...
劍指offer刷題記錄 綜合
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 做這個題目做的真的很煩,最麻煩的就是判斷當前是否越界。可儲存的最大的正數末位為7,可儲存...