1. 程式人生 > >[牛客網,劍指offer,python] 變態跳臺階

[牛客網,劍指offer,python] 變態跳臺階

變態跳臺階

題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

解題思路

這個問題和 跳臺階 很類似,只是將青蛙每次跳躍階數的選擇從兩種擴充套件到了n種。
問題可以轉換為:當前臺階的跳法種數 = 當前臺階之前的所有臺階的跳法之和
即:f (n) = f (n-1) + f (n-2) + f (n-3) + … + f (2) + f (1)

程式碼

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
if number < 3: return number a = [0,1,2] for i in range(3, number+1): a.append(sum(a)+1) return a[number]

相關推薦

Offer》程式設計 29.最小的k個數 (解法1需要改變原陣列)

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路 由於快速排序每次能夠把一個數放置在正確的位置上。因此,我們可以使用快速排序的Partition函式,對陣列進行排序,直到第k個

習題offer之數值的整數次方

www. aps pre art ott ever view power left 分析: 要考慮到exponent為0和負數的情況。 如果base是0並且exponent是負數的時候呢?那就發生除0的情況了。 AC代碼:public class Solut

和為S的連續正數序列——offer

http cti code 題目 作業 OS enc www. count-1 題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數

offer

重建二叉樹 題目描述: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 分析: 前序遍歷序列的

offer》之Python2.7實現:斐波那契數列

題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 思路 1、老方法遞迴 直接幹了一個普通遞迴,但是系統判超時 2、 迭代 # -*- coding:utf-8 -

Offer》 程式設計 23. 二叉樹的後序遍歷序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 解題思路 二叉搜尋樹的特點:後序遍歷的時候最後一個數是根節點。前面的數分為兩個部分,本別是左子樹部分和右子樹部分。左子樹

offer》之Python2.7實現:二進位制中1的個數

題目描述 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 思路 來源牛客網高玩: 如果一個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1(如果最右邊的1後

Offer》 程式設計 25.複雜連結串列的複製 (最優解法)

題目描述 輸入一個複雜連結串列(每個節點中有節點值,以及兩個指標,一個指向下一個節點,另一個特殊指標指向任意一個節點),返回結果為複製後複雜連結串列的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空) 解題思路 這次使用時間複雜度為O(n

offer》之Python2.7實現:反轉連結串列

題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 思路 迴圈遍歷連結串列,一邊遍歷,一邊構建新的逆序連結串列 程式碼 # -*- coding:utf-8 -*- # class ListNode: # def __init__(sel

Offer》程式設計 29. 最小的k個元素 (使用堆)

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路 本題可以構建一個size為k的最大堆進行求解。 遍歷陣列。 當堆中元素總量小於k的時候,將當前元素放入堆; 當堆中元素總

Offer》程式設計 30.連續子陣列最大和

題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:{6,

offer》之Python2.7實現:二叉樹的映象

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。 輸入描述: 二叉樹的映象定義:源二叉樹 思路 遞迴遍歷二叉樹,交換左右子樹即可,需要注意葉節點的處理 程式碼 # -*- coding:utf-8 -*- # class TreeNode: #

Python :從尾到頭列印連結串列 【offer

# class ListNode: # def __init__(self, x): # self.val = x # self.next = None cl

Offer】07變態臺階

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 時間限制:1秒;空間限制:32768K 解題思路 可利用數學歸納法找規律: 當n=1,f(1) = 1; 當n=2,f(2) = 2; 當n=3,f(

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------遞迴------變態臺階

題目 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路 我想說,這青蛙真變態,真能跳。 當n=1時,結果為1; 當n=2時,結果為2; 當n=3時,結果為4; 以此類推,我們使用數學歸納法不難發現

offer刷題-變態臺階問題

時間限制:1秒 空間限制:32768K 熱度指數:244626 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。。 題目分析 依舊從簡單到複雜 結果數滿足一個公式,從簡單的開始推導結果

offer第一頁筆記

請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 class Solution { public: void replaceSpace(char *str, int le

[offerpython] 變態臺階

變態跳臺階 題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 這個問題和 跳臺階 很類似,只是將青蛙每次跳躍階數