《劍指offer》系列 矩形覆蓋(Java)
連結
牛客:矩形覆蓋
題目描述
我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
思路
和跳臺階一模一樣
程式碼
public class Solution { public int RectCover(int target) { if(target==0||target==1||target==2) return target; int first = 1; int second = 2; int res = 0; for(int i=3; i<=target; i++) { res = first + second; first = second; second = res; } return res; } }
相關推薦
劍指offer之矩形覆蓋(Java實現)
矩形覆蓋 NowCoder 題目描述: 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? ###解題思路: 2*n的大矩形,和n個2*1的小矩形 其中target*2為大矩陣的大小
《劍指offer》系列 矩形覆蓋(Java)
連結 牛客:矩形覆蓋 題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路 和跳臺階一模一樣 程式碼 public
劍指offer:醜數(java)
package Second; /** * 題目: * 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。 * 例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。
劍指offer:字串的組合(java)
字串的組合: 給一個字串,比如ABC, 把所有的組合,即:A, B, C, AB, AC, BC, ABC, 都找出來。 解題思路: 假設我們想在長度為n的字串中求m個字元的組合。我們先從頭掃描字串的第一個字元。針對第一個字元,我們有
劍指Offer面試題15(Java版):鏈表中倒數第K個結點
head 計數器 easy sta 相同 ret white style 輸出 題目: 輸入一個鏈表。輸出該鏈表中倒數第k哥結點。 為了符合大多數人的習慣,本題從1開始計數。即鏈表的尾結點是倒數第1個結點。 比如一個鏈表有6個結點。從頭結點開始它們的值依次是1。2。
劍指Offer面試題43(Java版):n個骰子的點數
pac pos max mod ins pri class pro bili 題目:把n個骰子仍在地上。全部骰子朝上一面的點數之和為s,輸入n,打印出s的全部可能的值出現的概率。 解法一:基於遞歸求骰子的點數,時間效率不夠高 如今我們考慮怎樣統計每個點數出現的次數。要向
劍指offer 10矩形覆蓋
solution 矩形覆蓋 總結 建議 tar targe code ber ati 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法 java版本: public class Solution
劍指offer-10-矩形覆蓋
rect 方法 pro 拓展 返回 分析 -- 存在 應該 題目描述 我們可以用2×1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2×n的大矩形,總共有多少種方法? 題目分析 (參考牛客網Daniel Lee 分享的)用歸納法歸納如下, (1
劍指offer:矩形覆蓋
試題: 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 程式碼: 同樣是總結出規律,然後使用迭代,當n=1時,只有一種方法;當n=2時,只有兩種方法;當n=3時,只有三種方法。從n=3往回
劍指offer(10) 矩形覆蓋
題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2n的大矩形,總共有多少種方法?* 解題思路 小矩形可以橫放可以豎放,則第一步一共有兩種方法,豎放或橫放。在豎放之後的話,涉及到的就是用n-1個21的小矩形覆蓋2(n-1)的大矩形的方法。如果
劍指Offer刷題筆記(java實現)_26.樹的子結構
題目描述: 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)。 其實思路很簡單:我們的演算法就通過比較即可,因為是樹的遍歷比較所以第一時間想到了遞迴 先假設母樹為A,子樹為B (1)我們先去判斷節點的第一個點的值是
劍指Offer刷題筆記(java實現)_39.陣列中次數超過一半的數字
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。 例如輸入陣列:{1,3,3,2,3,2,3,3,2}。由於2在陣列中出現了5次,超過陣列長度的一半,因此要輸出2。 三種解法: 第一種遍歷陣列,利用hashMap儲存每個數字出現的次數,時間複雜度O(n)
劍指Offer面試題40(Java版):陣列出現一次的數字
題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。 * 請些程式找出這兩個只出現一次的數字。要求時間複雜度為O(n),空間複雜度為O(1) 例如輸入陣列{2,4,3,6,3,2,5,5},
劍指offer之跳臺階(Java實現)
跳臺階 NowCoder 題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 ###解題思路: 對於第n個臺階來說,只能從n-1或者n-2的臺階跳上來,所以 F(n) = F(n-1) +
劍指Offer面試題10(Java版):二進位制中的1的個數
題目:請實現一個函式,輸入一個整數,輸出該數二進位制表示中1的個數。例如把9表示成二進位制是1001,有2位是1,因此如果輸入9,該函式輸出2. 1、可能引起死迴圈的解法 這是一道很基本的考察二進位制
劍指Offer面試題39(Java版):二叉樹的深度
題目:輸入一棵二叉樹的根節點,求該數的深度。從根節點到葉結點依次進過的結點(含根,葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 例如,如下圖的二叉樹的深度為4,因為它從根節點到葉結點的最長的路徑包含4個結點(從根結點1開始,經過2和結點5,最終到達葉結點7) 我們
劍指offer演算法-----矩形覆蓋
演算法描述:我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 分析與實現:由於是2*n的大矩形,同時這個矩形的長度不變,只有寬度n一直在變。 經過分析會發現覆蓋的方法其實和佔滿寬度n的方式
劍指Offer面試題36(Java版):陣列中的逆序對
題目:在陣列中的兩個數字如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數 例如在陣列{7,5,6,4}中,一共存在5對逆序對,分別是{7,6},{7,5},{7,4},{6,4},{5,4}。 看到這個題目,我們的第一反
劍指Offer面試題6(Java版):重建二叉樹
題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重新構造出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中不包含重複的數字。例如輸入的前序遍歷序列為{1,2,4,7,3,5,6,8}和中序遍歷為{4,7,2,1,5,3,6,8},則重建出二叉樹並輸出它的頭結點。 在二叉樹的前
劍指Offer面試題25(Java版):二叉樹中和為某一值的路徑
題目:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉結點所經過的所有的結點形成一條路徑。 如下圖,輸入二叉樹和整數22,則打印出兩條路徑,第一條路徑包含結點10,12,第二條路徑包含的結點為10,5,7. 一般的資料結構