一道爬樓梯的演算法題
題目:一個人需要上樓梯,每次他只能上1,2或者3節臺階一共有18節臺階,問此人有多少種方法走上樓梯?
解:此題是遞迴題,f(18)=f(17)+f(16)+f(15);
解析:假設只有一節臺階 有1種方法可以上去,2節臺階時有2種,3節時有4種方法,按照上述歸納f(4)=f(1)+f(2)+f(3);以此繼續算;
若是求共18節樓梯,其實就可以倒著想,他最後上到18級時,只能有3種方式,1級2級3級,若為1級,則有的方法就是f(17),若為2級,則有的方法就是f(16),若為3級,則有的方法就是f(15),三種情況加起來,便是總的方法數。
第2問:此題的時間複雜度?
解 3的n次方(當n趨與無限大的時候)
第三問:怎麼樣 提高此題的計算效率?
解:1用一個for迴圈,複雜度就是n
2.將所有資料存起來,用的時候直接讀出來,也就是用空間換時間。
相關推薦
一道爬樓梯的演算法題
題目:一個人需要上樓梯,每次他只能上1,2或者3節臺階一共有18節臺階,問此人有多少種方法走上樓梯? 解:此題是遞迴題,f(18)=f(17)+f(16)+f(15); 解析:假設只有一節臺階 有1種方法可以上去,2節臺階時有2種,3節時有4種方法,按照上述歸納f(4)
一道簡單的演算法題:不借助第三變數來交換兩個變數的值
今天做筆試碰到一道簡單的演算法題:不借助第三變數來交換兩個變數的值,記錄一下。 交換兩個變數的值的普遍做法都是藉助第三變數,這樣具有較高的可讀性。 a = 3 b = 5 t = a a = b b = t 但是,如果記憶體有限,只允許用2個變數呢? 強大的CS當然有辦法解決
一道簡單的演算法題--整數反轉的一些記錄
首先是題幹 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。 我首先想到的就是字串的相關操作,於是頭也不回地寫
爬樓梯演算法問題分析(不止三步)
演算法分析: 階梯數為1,爬樓梯方法就一種,為1,f(1)=1;階梯數大於1的時候,遞迴求解:階梯數為2的時候,最多兩種方式上樓:1 ,1;2 => f(2)=2;爬三層樓梯的時候,爬1層,再爬兩層,則是爬三層樓梯由爬一層樓梯和爬兩層樓梯的情況的結合:f(3)=f
從一道騰訊演算法題到一種遞迴形式
演算法題目: 12個高矮不同的人排兩行,一行六人,在保證每行從左到右依次增高,每列從前到後依次增高的前提下,一共有多少種排法? 思路: 我們用陣列來表示這兩排人: 假設高矮不同的12個人我們分別用0~11來表示。 通過簡單的思考,我們可以斷定:前排的最左邊應該為0,後排的
一道走迷宮演算法題python實現
前幾天逛部落格時看到了這樣一道問題,感覺比較有趣,就自己思考了下方案順便用python實現了一下。題目如下: 用一個二維陣列表示一個簡單的迷宮,用0表示通路,用1表示阻斷,老鼠在每個點上可以移動相鄰的東南西北四個點,設計一個演算法,模擬老鼠走迷宮,找到從入口到出口的一條路徑
好吧,又是兩分鐘看完一道投機取巧的演算法題
題目來源於 LeetCode 上第 172 號問題:階乘後的零。題目難度為 Easy,目前通過率為 38.0% 。 題目描述 給定一個整數 n,返回 n! 結果尾數中零的數量。 示例 1: 輸入: 3 輸出: 0 解釋: 3! = 6, 尾數中沒有零。 示例 2: 輸入: 5 輸出: 1 解釋: 5! = 1
面試演算法題:爬樓梯,N級樓梯有多少種走法?
By Long Luo 最近去面試時,在一家小公司面試時,公司小BOSS給我出了一道演算法題: 一個人爬樓梯,一步可以邁一級,二級,三級臺階,如果樓梯有N級,要求編寫程式,求總共有多少種走法。 這個問題應該是一個很老的題目了,用中學數學來說,就是一個
【leetcode 簡單】第十八題 爬樓梯
strong sel 整數 turn ret cli def 註意 solution 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 註意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2
演算法之爬樓梯
題目:假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 沙雕解法一:利用遞迴,就是最後一步一定是前一步走一步或倒退兩步走兩步,超時! #include "pch.h" #include <iostream&
一道演算法題——8選6全排列
在網上看到一道題目:給定一個字串包含8組元素,任取其中六組進行全排列。 例如: string str = "01 02 03 04 05 06 07 08"; 從中輸出所有由其中六個組成的序列。 思路:是用2進位制來表示這個字串的所有排列情況, 對每一位為1則輸出,如
從尾到頭列印連結串列——【一天一道演算法題】
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。 思想:棧的思想 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x #
一道能做出來就腳踢BAT的高難度演算法題:在元素重複三次的陣列中查詢重複一次的元素
我們看一道難度很高的查詢類演算法題,如果你真能在一小時內給出正確的演算法和編碼,那麼你隨便在BAT開口年薪一百萬都不算過分。我們先看題目:給定一個數組,它裡面除了一個元素外,其他元素都重複了三次,要求在空間複雜度為O(1),時間複雜度為O(n)的約束下,查詢到只重複了一次的元素。 在
每天一道js演算法題---持續更新
2017.08.10 1.涉及的知識包括變數定義提升、this指標指向、運算子優先順序、原型、繼承、全域性變數汙染、物件屬性及原型屬性優先順序。 function Foo() { getName = function () { alert (1); }; retur
#程式設計師去面試,卻被一道“小學”演算法題給刷下來:求幫忙看看
身為一名優秀的網際網路開發工程師,要求要具備良好的邏輯思維,要是連邏輯思維都沒有的話,那麼程式設計這一項工作絕對不適合你,因為你根本搞不懂程式碼之間的關係。所以程式設計師在面試的時候,會遭遇到一些相對基礎的邏輯思維題,如果你能做出來,那麼自然是好事,如果你做不出來,那麼也沒有關係,因為面試官只會看你
一道經典的Python演算法題|細細拆解
新建Python軟體開發測試技術交友群QQ:952490269(加群備註software) 今天來看一道大廠經常面試的演算法題Python解法。 有效的括號 判斷一個字串中的大,中,小括號是否合法: 有效字串需滿足: 左括號必須用相同型別的右括號閉合
leetcode的python實現 刷題筆記70:爬樓梯(動態規劃)
假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 階 + 1
做題感悟:爬樓梯
可能看到標題大家會很驚訝,畢竟這道題實在是太簡單了,但是,我要講的並不是這道題。 爬樓梯 總時間限制: 1000ms 記憶體限制: 65536kB 描述 樹老師爬
爬樓梯(leetcode簡單篇第七十題)
假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1 階 + 1 階 2
一道演算法題
關於陣列!!! //問題:給你n個無序的int整型陣列arr,並且這些整數的取值範圍都在0-20之間,要你在 O(n) 的時間複雜度中把這 n 個數按照從小到大的順序打印出來。 //問題:給你n個無序的int整型陣列arr,並且這些整數的取值範圍都在0-20之間,要你在 O(n) 的時間