劍指Offer-遞迴和迴圈-(3)
知識點:遞迴和迴圈
變態跳臺階
一隻青蛙一次可以跳上一級臺階,也可以跳上2級。。。。。。它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
分析:
舉例子找規律;
n=1 : 直接返回1;
n=2:1-1 2 返回2;
n=3:1-1-1 1-2 2-1 3 返回4 ;
n=4:1-1-1-1 2-1-1 1-2-1 1-1-2 2-2 1-3 3-1 4 返回8
總結規律:2的n-1次方。
public class Solution{ public int JumpFloorII(int target){ int result=1; for(int i=target-1;i>0;i--){ result*=2; } return result; } }
相關推薦
劍指Offer-遞迴和迴圈-(3)
知識點:遞迴和迴圈 變態跳臺階 一隻青蛙一次可以跳上一級臺階,也可以跳上2級。。。。。。它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 分析: 舉例子找規律; n=1 : 直接返回1; n=2:1-1 2 返回2; n=3:1-1-1 1-2 2-
劍指Offer-遞迴和迴圈-(4)
知識點:遞迴和迴圈 題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 分析:我們先把2x8的覆蓋方法記為f(8).用第一個2x1的小矩形去覆蓋大矩形的最左邊時有兩種選擇:豎著或者橫著放。當豎著放的時
劍指offer------遞迴------變態跳臺階
題目 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路 我想說,這青蛙真變態,真能跳。 當n=1時,結果為1; 當n=2時,結果為2; 當n=3時,結果為4; 以此類推,我們使用數學歸納法不難發現
【劍指offer】面試題57(1):和為S的數字
題目 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 ps: 對應每個測試案例,輸出兩個數,小的先輸出。 思路
劍指offer:樹的子結構(Python)
題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x #
劍指Offer 51. 構建乘積陣列 (陣列)
題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 題目地址 https://www.nowcoder.com/practice/94a4d381a
《劍指offer》系列 醜數(Java)
連結 牛客:醜數 題目描述 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路 醜叔一定是2 3 或是 5的倍數 i2 i3 i5
劍指offer-順時針列印矩陣(陣列)
題目描述 輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.  
《劍指offer》系列 替換空格(Java)
連結 牛客:替換空格 題目描述 請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 思路 先遍歷一遍
《劍指offer》系列 跳臺階(Java)
連結 牛客:跳臺階 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路 和斐波那契那題類似。 程式碼 public c
《劍指offer》系列 矩形覆蓋(Java)
連結 牛客:矩形覆蓋 題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路 和跳臺階一模一樣 程式碼 public
劍指offer:構建乘積陣列(python)
設有陣列大小為5。對於第一個for迴圈第一步:b[0] = 1;第二步:b[1] = b[0] * a[0] = a[0]第三步:b[2] = b[1] * a[1] = a[0] * a[1];第四步:b[3] = b[2] * a[2] = a[0] * a[1] * a[2];第五步:b[4] = b[
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 (4)求二叉樹的所有葉子及結點總數。
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu
【劍指offer】面試題32(2):分行從上到下列印二叉樹
完整程式碼地址 題目 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思路 用佇列來儲存要列印的節點。 同時我們需要兩個變數:一個變量表示在當前層中還沒有列印的節點數
劍指offer演算法8 跳臺階(JAVA)
這個問題歸根結底還是一個費布拉奇數列,仔細找一下規律即可,剛開始做的時候我是直接寫出前六個數的結果來找規律的。 一級臺階:1種 fib(1)=1 二級臺階:2種 fib(2)=2 三級臺階:3種 fib(3)=fib(1)+fib(2)=3 四級臺階:5種 fib(4
[劍指offer] --10.變態跳臺階(遞迴和迴圈)
題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 public class Solution { public int JumpFloorII(int target) { } }
劍指offer:遞迴和迴圈系列問題解答
目錄 n<=39 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 使用遞迴的方式如果數字較大會有很嚴重的效率問題!可以用二叉樹的方式表示這種依賴關係:(以9為例子)
《劍指Offer》遞迴和迴圈--矩形覆蓋
時間限制:1秒 空間限制:32768K 熱度指數:228315 題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路: 根據找規律得:n=1時,1種;n=2時,2種;n
《劍指Offer》遞迴和迴圈--變態跳臺階
時間限制:1秒 空間限制:32768K 熱度指數:253078 本題知識點: Java工程師 C++工程師 iOS工程師 安卓工程師 運維工程師 前端工程師 演算法工程師 PHP工程師&nbs
《劍指Offer》遞迴和迴圈--跳臺階
時間限制:1秒 空間限制:32768K 熱度指數:320390 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路: 找規律的方法,f(1) = 1, f(2) = 2, f(