劍指offer 第10題 矩陣覆蓋
描述:
我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
思路:
遞迴問題
斐波那契數列
程式碼:
class Solution: def rectCover(self, number): # write code here a, b = 1, 2 if number == 1: return 1 elif number == 0: return 0 elif number == 2: return 2 count = 2 while count < number: count += 1 a, b = b, a + b return b
結果:
執行時間:30ms
佔用記憶體:5736k
相關推薦
劍指offer 第10題 矩陣覆蓋
描述: 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路: 遞迴問題 斐波那契數列 程式碼: class Solution: def rectCover(self, number):
【劍指offer第十題】矩形覆蓋
題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? n=0,0種; n=1,1種; n=2,2種; n=
劍指offer第32題JS演算法:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次
題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次 這是我某一次去朋友公司面試試水時出的面試題,結果給我五分鐘我寫了個for迴圈的方法,被狠狠鄙視/哭笑不得 結果回來後好奇就跟同事
劍指offer第3題:從尾到頭打印鏈表
off 輸出結果 pre col 結構 ava image stack 鏈表 方法一:采用棧來存儲,用ArrayList保存。註意題目給出的輸出結果是ArrayList import java.util.ArrayList; import java.util.Sta
劍指Offer--第16題 數值的整數次方
++ 循環 運算 判斷 api 比較 ron color 感覺 第16題 數值的整數次方 題目:給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 思路 看到有點懵,第一感覺覺得是不是應該考慮0的0次或者負數情況,
棧的壓入 彈出序列(劍指offer第21題)
一、題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。 假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列, 但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這
【劍指offer第三題】從尾到頭列印連結串列
import java.util.ArrayList; public class Solution { ArrayList list=new ArrayList();//放在遞迴體外面,每次新
【劍指offer第五題】用兩個棧實現佇列
棧的實現是先進後出,佇列是先進先出。思路就是第一個棧的元素按次序出棧,然後第二個棧依次入棧,然後出棧。 import java.util.Stack; public class Solution
【劍指offer第六題】旋轉陣列的最小數
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋
【劍指offer第七題】斐波那契數列
題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 剛開始覺得輸入為一個數,然後找到這個數在斐波那契數列中的位置
【劍指offer第八題】跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果) 第一級臺階1種,第二級臺階2種,第四級3種,第四級5種,第五級8種
陣列中出現次數超過一半的數字(劍指offer第29題)
一、題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。 例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次, 超過陣列長度的一半,因此輸出2。如果不存在則輸出0 二、解題思路 (方法一):自己想出來的,時
劍指offer第24題(二叉樹中和為某一值的路徑)
題目:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思想:由於本題中的根要在前面,因而我們首先想到的是前序遍歷。當用前序遍歷的方式訪問某一節點時,我們把該節點新增到路徑上,並累加
劍指offer第1題
Q:在一個二維陣列中,每一行都按照從左到右遞增順序排序,每一列都按照從上到下遞增排序。完整一個函式,輸入這樣二維陣列和一個整數,判斷陣列中是否含這個整數。 思路一: /* 矩陣是有序的,從左下角來
劍指offer第六題陣列旋轉
寫在前面,1.這是我目前遇到最有趣的題目涵蓋多種思路,多種解法,也是多種問題。故記錄下來總結一下。半夜看到這道題,首先想到的是二分,後來一看最小,那不是直接遍歷就行,但是T=O(n)。2.左神的課程中提到過,對於二分搜尋,一般大家都是mid=(left+right)/2,其實
劍指offer第三題 從尾到頭列印連結串列
題目描述 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。 思路 1. 從頭開始,每經過一個節點就把它的值儲存下來,最後反轉 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x
劍指offer第六題【旋轉陣列的最小數字】c++實現
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個非遞減序列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 本題給的也算是有序數列,一看就應該和二分沾邊,事實也是這樣。 題目給的是非遞減序列,就是
重建二叉樹 (劍指offer第六題)
題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 有思路,但是沒寫出來。還得多練練。 解釋一下大神的幾個關鍵
用兩個棧實現佇列 (劍指offer第7題)
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 棧的特點:先進後出 佇列的特點:先進先出 push很好實現。 pop可能有一點難度。最開始兩個棧中都沒有元素,所有進佇列的元素都存在stack1中。因為棧是先進後出,所有最先進來的要最後出,和佇列相反。所以需要藉助s
用兩個棧實現隊列 (劍指offer第7題)
info 一個 .com 所有 有一點 bsp 都沒有 我想 完成 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 棧的特點:先進後出 隊列的特點:先進先出 push很好實現。 pop可能有一點難度。最開始兩個棧中都沒有元素,所有進隊列