原创 劍指Offer-Python-斐波那契數列

題目 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。 n<=39 思路:兩種方法,遞歸和遞推。這題的測試環境中不允許用遞歸,所以以下代碼爲遞推。 # -*- cod

原创 劍指Offer-Python-旋轉數組的最小數字

題目 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOT

原创 劍指Offer-Python-用兩個棧實現隊列

題目: 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。 知識點:棧和隊列的區別在於,棧的進出口爲同一個,而隊列分出口和進口。這樣導致了棧先進後出,隊列先進先出的特點。 思路:基於隊列和棧

原创 劍指Offer-Python-從尾到頭打印鏈表

題目 輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 思路:從頭到尾遍歷鏈表,將值存在列表res中,最後將res逆序輸出。 # -*- coding:utf-8 -*- # class ListNode: #

原创 [leetcode]Python實現-989. 數組形式的整數加法

989. 數組形式的整數加法 描述 對於非負整數 X 而言,X 的數組形式是每位數字按從左到右的順序形成的數組。例如,如果 X = 1231,那麼其數組形式爲 [1,2,3,1]。 給定非負整數 X 的數組形式 A,返回整數 X

原创 劍指Offer-Python-重建二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建

原创 [leetcode]Python實現-299. 猜數字遊戲

299. 猜數字遊戲 描述 你正在和你的朋友玩 猜數字(Bulls and Cows)遊戲:你寫下一個數字讓你的朋友猜。每次他猜測後,你給他一個提示,告訴他有多少位數字和確切位置都猜對了(稱爲“Bulls”, 公牛),有多少位數

原创 [leetcode]Python實現-524.通過刪除字母匹配到字典裏最長單詞

524.通過刪除字母匹配到字典裏最長單詞 描述 給定一個字符串和一個字符串字典,找到字典裏面最長的字符串,該字符串可以通過刪除給定字符串的某些字符來得到。如果答案不止一個,返回長度最長且字典順序最小的字符串。如果答案不存在,則返

原创 [leetcode]Python實現-102.二叉樹的層次遍歷

102.二叉樹的層次遍歷 描述 思路:層次遍歷。定義兩個列表,存儲當前層的結點和下一層的結點。 # Definition for a binary tree node. # class TreeNode: # def

原创 VituralBox中虛擬機網絡

說起來慚愧,桌面虛擬機軟件使用好幾年了,但是對於虛擬機網絡與主機的關係一直不是很清楚。趁學習KVM的機會,總結一下VituralBox中虛擬機網絡連接情況。主機環境:mac OS(IP 192.168.1.117) + VirtualBo

原创 [leetcode]Python實現-148.排序鏈表

148.排序鏈表 描述 在 O(n log n) 時間複雜度和常數級空間複雜度下,對鏈表進行排序。 示例 輸入: 4->2->1->3 輸出: 1->2->3->4 輸入: -1->5->3->4->0 輸出: -

原创 劍指Offer-Python-替換空格

題目: 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 思路: 因爲在Python中字符串不可變,於是定義了一個

原创 劍指Offer-Python-二維數組中的查找

題目: 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 偷懶代碼1: # -*-

原创 [leetcode]Python實現-389. 找不同

389. 找不同 描述 給定兩個字符串 s 和 t,它們只包含小寫字母。 字符串 t 由字符串 s 隨機重排,然後在隨機位置添加一個字母。 請找出在 t 中被添加的字母。 示例: 輸入: s = “abcd” t = “ab

原创 [leetcode]Python實現-392. 判斷子序列

392. 判斷子序列 描述 給定字符串 s 和 t ,判斷 s 是否爲 t 的子序列。 你可以認爲 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~= 500,000),而 s 是個短字符串(長度 <=100)。