原创 劍指offer全集詳解python版——醜數

題目描述: 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路: 利用之前的數生下一個

原创 劍指offer全集詳解python版——兩個鏈表的第一個公共結點

題目描述: 輸入兩個鏈表,找出它們的第一個公共結點。 思路: 沒有環的話,經典的快慢指針就夠了。 代碼 # -*- coding:utf-8 -*- # class ListNode: # def __init__(

原创 劍指offer全集詳解python版——二叉搜索樹與雙向鏈表

題目描述: 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 思路: 利用二叉搜索樹的中序遍歷是遞增的順序,拿一個tail節點記錄上次訪問的節點,跟這次訪問的

原创 劍指offer全集詳解python版——和爲S的兩個數字

題目描述: 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 思路: 雙指針 代碼 # -*- coding:utf-8 -*- class S

原创 劍指offer全集詳解python版——二叉樹的深度

題目描述: 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 思路: 後序遍歷。 代碼·: 代碼 # -*- coding:utf-8 -*- # cl

原创 劍指offer全集詳解python版——左旋轉字符串

題目描述: 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出

原创 劍指offer全集詳解python版——滑動窗口的最大值

題目描述: 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5}; 針對數組{

原创 劍指offer全集詳解python版——序列化與反序列化二叉樹

題目描述: 序列化是將數據結構或對象轉換爲一系列位的過程,以便它可以存儲在文件或內存緩衝區中,或通過網絡連接鏈路傳輸,以便稍後在同一個或另一個計算機環境中重建。 設計一個算法來序列化和反序列化二叉搜索樹。 對序列化/反序列化算法的

原创 劍指offer全集詳解python版——求1+2+3+...+n

題目描述: 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 思路: 比如可以利用遞歸以及關鍵字and 代碼: # -*- coding:

原创 劍指offer全集詳解python版——圓圈中最後剩下的數

題目描述: 有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號爲0的小朋友開始報數。每次喊到m-1的那個小朋友要出列並且不再回到圈中,從他的下一個小朋友開始,繼續0…m-1報數….這樣下去….直到剩下

原创 劍指offer全集詳解python版——刪除鏈表中重複的結點

題目描述: 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5 思路: 注意邊界條件。 代碼: # -*-

原创 劍指offer全集詳解python版——翻轉單詞順序

題目描述: 例如,“student. a am I”。翻轉後的句子應該是“I am a student.”。 思路: 它又想考原址性的,但python字符串不支持。 代碼: # -*- coding:utf-8 -*- clas

原创 劍指offer全集詳解python版——數組中重複的數字

題目描述: 在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2

原创 劍指offer全集詳解python版——按之字形順序打印二叉樹

題目描述: 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 思路: 開輔助空間 代碼: # -*- coding:utf-8 -*

原创 劍指offer全集詳解python版——二叉樹的下一個結點

題目描述: 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 思路: 1.該節點有右子樹,下一個節點是右子樹的最左節點 2.沒有右子樹的話,如