劍指 Offer - 9:變態跳臺階
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法
題目連結:https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387
解題思路
公式法:F(n) = F(n-1)+F(n-2)+F(n-3)+…+F(1),F(n-1) = F(n-2)+F(n-3)+…+F(1) => F(n) = 2 * F(n-1)
在網上看到這種說法,感覺更加易懂:每個臺階都有跳與不跳兩種情況(除了最後一個臺階),最後一個臺階必須跳。所以共用 2^(n-1) 中情況
public class Solution {
public int JumpFloorII(int target) {
if (target == 0) return 0;
// return (int) Math.pow(2, target-1);
return 1 << (target-1); // 位移操作,更快
}
}
相關推薦
劍指 Offer - 9:變態跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法 題目連結:https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387
劍指offer-09:變態跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 關於本題,前提是n個臺階會有一次n階的跳法。分析如下: 思路 f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2階一次跳
【劍指Offer】07變態跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 時間限制:1秒;空間限制:32768K 解題思路 可利用數學歸納法找規律: 當n=1,f(1) = 1; 當n=2,f(2) = 2; 當n=3,f(
劍指offer------遞迴------變態跳臺階
題目 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路 我想說,這青蛙真變態,真能跳。 當n=1時,結果為1; 當n=2時,結果為2; 當n=3時,結果為4; 以此類推,我們使用數學歸納法不難發現
劍指offer刷題-變態跳臺階問題
時間限制:1秒 空間限制:32768K 熱度指數:244626 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。。 題目分析 依舊從簡單到複雜 結果數滿足一個公式,從簡單的開始推導結果
[牛客網,劍指offer,python] 變態跳臺階
變態跳臺階 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 這個問題和 跳臺階 很類似,只是將青蛙每次跳躍階數
劍指offer(8)跳臺階
fun col ber function font 一個 結果 size write 題目描述: 一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 解題代碼: function jumpFloor(
劍指offer刷題之跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 # -*- coding:utf-8 -*- class Solution: def jumpFloor(self, nu
劍指offer 第8題 跳臺階
描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路: 逆向思維,倒數第二次和最後一次有兩種情況,跳一次,跳兩次,同理,倒數第二次和倒數第三次也有兩種,有f(n)=f(n-1)+f(n+1),符合斐波那契數列
劍指offer:變態跳臺階
試題: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 程式碼: 同理,從後往前想: f(n) = f(n-1) + f(n-2) + f(n-3) .... + f(1) + f(0) f(n-1
劍指offer(9) 變態跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 關於本題,前提是n個臺階會有一次n階的跳法。分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2階一次跳2階的次
劍指offer 第9題 變態跳臺階
描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路: f(n) = f(n-1) + f(n-2) + ... + f(1) + f(0) f(n-1) = f(n-2) + ... + f(0) 所以f(
劍指 Offer - 8:跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果) 題目連結:https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
劍指Offer9:變態跳臺階
思路: 因為n級臺階,第一步有n種跳法:跳1級、跳2級、到跳n級 跳1級,剩下n-1級,則剩下跳法是f(n-1) 跳2級,剩下n-2級,則剩下跳法是f(n-2) 所以f(n)=f(n-1)+f(n-2)+...+f(1)+f(0) 因為f(n-1)=f(n-2)+f(n-3)+...+f(1)+
劍指offer-08:跳臺階
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 於本題,前提只有 一次 1階或者2階的跳法。 分析 a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n-1個臺階,跳法是f(n-
劍指offer(1):數組
abs views 二維數組 如同 pad enter 數組與指針 在線 c語言細節 1 寫作計劃 最近在看《劍指offer》,發現自己有很多的數據結構與算法的基礎知識要復習,《好書一起讀(131):讓寫作更好》中提到用寫作倒逼閱讀,我很是贊同。所以,計劃以《劍指offe
劍指offer(2):字符串
std rcp rst line 包含 turn strcat 和數 arch C語言中的字符串 C語言中字符串的存儲方式和數組類似,都是連續定長的內存塊。字符串數組以\0結尾,所以會比正常數組多一位,char str3[5] = "1234"; //此處賦值字符串長度應
劍指Offer題目:字符串的排列
wap toc java res add font 16px turn return 題目描述: 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。
牛客(9)變態跳臺階
static public rii AR 臺階 pub jump += 跳臺階 // 題目描述// 一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。// 求該青蛙跳上一個n級的臺階總共有多少種跳法。 public static in
劍指offer(4):重建二叉樹
turn return null ptr 不存在 n) 地址 iterator eno 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,