劍指offer刷題記錄 抽象建模能力

2021-10-03 04:45:26 字數 1708 閱讀 9763

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,可儲存...