所有的劍指offer中的算法題的python實現可以查看:
最好自己畫圖和創建虛擬數據進行理解。
目錄
3.判斷101 - 200 之間有多少個素數, 並輸出所有的素數
5.一球從100 米高度落下,每次落地后反彈的高度是原高度的一半;求它在第10次落地時,經過多少米?第10次反彈多高?
6.猴子吃桃問題,每天吃所剩桃子總數的一半加1 個,直到第10天,只剩下 1個桃子
8.有一組分數序列:2/1, 3/2, 5/3, 8/5, .....求出這個數列的前20 項的和
11.利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
13.現有一個排好序的數組,輸入一個數,要求按原來的順序插入到數組中
1.輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。
2.用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
1. 輸入某年某月某日,判斷這是這一年的第幾天
2.打印出 5 種不同形式的九九乘法表
(輸出的數字的形式類似於第 7 道題中的打印出圖形的例子, 這里可以將數字看做是 7 中的字符 * )
3.判斷101 - 200 之間有多少個素數, 並輸出所有的素數
5.一球從100 米高度落下,每次落地后反彈的高度是原高度的一半;求它在第10次落地時,經過多少米?第10次反彈多高?
6.猴子吃桃問題,每天吃所剩桃子總數的一半加1 個,直到第10天,只剩下 1個桃子
7.打印出特定圖形
8.有一組分數序列:2/1, 3/2, 5/3, 8/5, .....求出這個數列的前20 項的和
9.求 1+2!+3!。。。+20!的累加和
10.使用遞歸方法求階乘10!
11.利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
12 求一個3*3 矩陣的對角線的和
13.現有一個排好序的數組,輸入一個數,要求按原來的順序插入到數組中
劍指offer中的一些題目:
1.輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。
2.用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
3.輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。
4.旋轉數組的最小數字
把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。 NOTE:給出的所有元素都大於0,若數組大小為0,請返回0。
5.斐波那契數列
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。
n<=39
6.青蛙跳台階
一只青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法(先后次序不同算不同的結果)。算法思想:依然是斐波那切數列問題,當跳一節台階時還有n-1個台階,當第一次跳兩個台階時,還有n-2個台階要跳。同樣轉化為斐波那契數列問題。
有公式:可以分步驟進行

7.變態跳台階
一只青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。
| 1 ,(n=0 )
f(n) = | 1 ,(n=1 )
| 2*f(n-1),(n>=2)

8.矩形覆蓋
我們可以用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
算法思想:當第一步是豎着放,右邊還剩n-1個區域,當第一步橫着放時,左下角應必須橫着放,右邊還剩n-2個區域,可以看出這仍斐波那切數列問題f(n)=f(n-1)+f(n-2)
9.求二進制 1 的個數
問題:輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
10.數字的整數次方
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。

