領扣演算法思路分析

2021-09-28 12:55:38 字數 534 閱讀 4693

1、爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是乙個正整數。 示例 1:輸入: 2輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 階 + 1 階 2. 2 階

思路:遞迴或者動態規劃

動態規劃:不難發現,這個問題可以被分解為一些包含最優子結構的子問題,即它的最優解可以從其子問題的最優解來有效地構建,我們可以使用動態規劃來解決這一問題。 第 ii 階可以由以下兩種方法得到: 在第 (i-1)(i−1) 階後向上爬一階。 在第 (i-2)(i−2) 階後向上爬 22 階。 所以到達第 ii 階的方法總數就是到第 (i-1)(i−1) 階和第 (i-2)(i−2) 階的方法數之和。 令 dp[i]dp[i] 表示能到達第 ii 階的方法總數: dp[i]=dp[i-1]+dp[i-2] dp[i]=dp[i−1]+dp[i−2]

public int climb(int n)

return dp[n];

}

演算法的分析思路

分析框架 1 以演算法輸入規模n作為引數進行分析演算法效率 2 時間複雜度 找出基本操作o 1 再計算它的執行次數 忽略乘法常量,僅關注增長次數 3 增長次數 log2n4 最差 平均和最佳效率均是指輸入規模為n時候的效率 平均效率可以引用已知的推到結果 主要概括分析框架 1 演算法的時間效率和空間...

每日一道領扣演算法

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...

領扣簡單演算法題 FizzBuzz問題

問題如下 給你乙個整數n.從 1 到 n 按照下面的規則列印每個數 如果這個數被3整除,列印fizz.如果這個數被5整除,列印buzz.如果這個數能同時被3和5整除,列印fizz buzz.如果這個數既不能被 3 整除也不能被 5 整除,列印數字本身。挑戰 你是否可以只用乙個 if 來實現 如果沒有...