劍指offer 大可日常打卡 遞迴

2021-08-23 12:03:12 字數 1735 閱讀 2549

題目描述:求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。

思路:遍歷?每乙個都算一下?暴力拆解!

public class solution 

int sum=0;

for(int i=1;i<=n;i++)

return sum;

}public static int get1num(int n)else if(current==1)else

i=i*10;

}return count;

}}

題目一:斐波那契數列

題目描述:大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。

n<=39。

思路:f(n)=0                   n=0;

f(n)=1                   n=1;

f(n)=f(n-1)+f(n-2)  n>1

public class solution 

if(n==1)

return fibonacci(n-1)+fibonacci(n-2);

}}

題目二:青蛙跳台階問題

思路:如果只有一級台階的話,那麼只有一種跳法;如果是兩級台階,那麼既可以一級一級跳,也可以一下跳兩級。接下來我們來討論如果是n級台階,如果第一步跳一級,那麼跳法就是剩下的n-1級跳法數目,如果第一步跳兩級,那麼跳法數目就是剩下的n-2級跳法數目。

public class solution 

if(target==1)

if(target==2)

return jumpfloor(target-1)+jumpfloor(target-2);

}}

題目三:**跳台階

思路:f(1)=1

f(2)=f(2-1)+f(2-2)

f(3)=f(3-1)+f(3-2)+f(3-3)

f(n)=f(n-1)+f(n-2)+...+f(n-n)

等於n的時候,有n種跳法,1級,2級...n級

f(n)=f(n-1)+f(n-2)+...+f(n-n)=f(0)+f(1)+f(2)+...+f(n-1)

f(n-1)=f(0)+f(1)+f(2)+...+f(n-2)

所以,f(n)=2*f(n-1)

即f(n)=1            (n=0)

f(n)=1            (n=1)

f(n)=2*f(n-1)  (n>=2)

public class solution else if(target==1)

return 2*jumpfloorii(target-1);

}}

題目描述:我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?

思路:斐波那契數列。

public class solution else if(target==1)else if(target==2)else

}}

2020 12 10 劍指offer打卡

題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。解題思路 1.雜湊表 統計每個數出現的次數 時間複雜度o n 空間複雜度o n 2.排序法 先將陣列排序,可能的眾數肯定...

劍指offer 迴圈遞迴

class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法...

劍指offer 樹 遞迴

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 回溯 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution de...