小編在求職找找工作期間劍指offer上的算法題刷了很多遍,並且每道題小編當時都總結了一種最適合面試時手撕算法的最優解法。考慮到劍指offer算法題在面試中的高頻出現,小編每天和大家分享一道劍指offer上的算法題,以及小編總結的答案。下面是第009道劍指offer算法題:
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有。
分析:
n個臺階會有一次n階的跳法。分析如下:
f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(n-(n-1)) + f(n-n)
我們可以繼續簡化:
f(n-1) = f(0) + f(1)+f(2)+f(3) + … + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + … + f(n-2)
兩式相減,可以得出:
f(n) = 2*f(n-1)
上述其實是一個等比數列:[1, 2, 4, 8,…]
第n項值爲:2^(n-1)
寫代碼是一個逐漸優化的過程,誰也不能一步到位直接給出最優解法(除非你是背題),面試算法題更多的是考察解題思路
class Solution {
public:
int jumpFloor(int number) {
if(number <= 0)
return 0;
else
return 1 << (number -1);
}
};
注:在牛客網上刷劍指offer題目時,最好使用牛客網自帶的編輯器,不建議使用IDE的代碼補全功能,因爲實際面試中是在A4紙上手寫代碼,是沒有代碼提示的。
有些題你看懂了,不代表你會了。看答案前或者看完答案第二天,動手在A4紙上寫寫代碼就知道自己是不是真的會了。
每天分享一道劍指offer算法題目,並且有最適合面試手撕算法環節的解法分享,歡迎大家關注我們~
其他文章
1. 學習筆記和學習資料彙總:前端 + 後端 + java + 大數據 + python + 100多實戰項目 + C++
3. 零基礎學爬蟲
4. 零基礎C++學習總結
歡迎關注個人公衆號【菜鳥名企夢】,公衆號專注:互聯網求職面經、java、python、爬蟲、大數據等技術分享:
公衆號菜鳥名企夢後臺發送“csdn”即可免費領取【csdn】和【百度文庫】下載服務;
公衆號菜鳥名企夢後臺發送“資料”:即可領取5T精品學習資料、java面試考點和java面經總結,以及幾十個java、大數據項目,資料很全,你想找的幾乎都有