leecode面試題16.11——跳水板
leecode1137——第n個泰波那契數
leecode面試題 08.05. ——遞迴乘法
leecode698. ——劃分為k個相等的子集
注意1:處理兩個特殊情況:k值小於等於0、shorter值等於longer的情況。
k小於等於0這個特殊情況很容易想到,但shorter=longer的情況是真的沒想到,測試用例沒通過才想到這種情況,當兩個值相等時,這個時候輸出陣列就乙個值就是shorter*k,要是還是按照通用方法,最後會輸出k個一樣的值。如圖所示:
注意2:根據所給的輸出示例,給出題目要求的輸出,本題的要求就是shorter這個值的個數從大到小去計算。
比如說這個測試用例,我得到的值是對著,但答案的順序和要求的有出入,因此觀察所給的輸入輸出示例則能得到要求的值。
;這個名字硬生生的把tribonacci翻譯成了中式英語
遞迴肯定是超時了,因為重複的計算太多了,所以需要用到遞迴的優化:考慮儲存重複計算值或者考慮自下而上的遞推方法。
這個題有意思了,剛剛複習的小青蛙跳台階的優化方法遞推方法剛好派上用場。
class
solution
return sum123;}}
;
class
solution
: def tribonacci
(self, n:
int)
->
int:
a, b, c =0,
1,1for i in range
(n):
a, b, c = b, c, a+b+c
return a
class
solution
};
函式1實現對原陣列的處理,包括計算這個要搜尋的總和target=陣列總和/k,將陣列元素用雜湊表進行儲存,方便後邊用dfs進行搜尋,還有就是特殊情況的處理,包括target不存在的情況和陣列最大值大於這個target的情況,都是返回false;
函式2實現dfs深度優先搜尋:實現尋找k個target是否能在陣列中組合存在。難理解的是核心dfs部分,用了乙個for迴圈取遍歷了所有可能的情況。
class
solution
int target = sum/k;
x = target;
if(sum%k !=
0|| maxnum > target)
return
false
;return
dfs(hashmap, k,0)
;//dfs搜尋x個target看是否存在
}//dfs尋找knew個target,newtarget是上乙個子集剩餘的需要尋找的元素
bool
dfs(unordered_map<
int,
int>
&hashmap,
int knew,
int newtarget)
else
}//dfs搜尋target,從陣列中最大的值開始搜尋
for(
int i=newtarget;i>
0;i--)}
return
false;}
};
菜鳥每天練習 之 遞迴演算法
遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫函式 或過程 來表示問題的解。遞迴過程一般通過函式或子過程來實現。遞迴演算法 在函式或子過程的內部,直接或者間接地呼叫自己的演算法。遞迴演算法解決問題的特點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞...
遞迴演算法練習 解壓縮
現在有一種字串的壓縮規則是這樣的 k string 表示string連續出現k次 0 k 1000 例如 s ef3 a 2 bc gh 解壓後的字串為 efaaabcbcgh 這種壓縮也可以巢狀,s 3 a2 c 解壓後為 accaccacc 輸入乙個字串s,請輸出乙個解壓後的字串。輸入都是嚴格合...
演算法設計與應用練習 遞迴
1.十進位制轉二進位制 2.斐波那契數列 3.翻牌問題 4.打靶問題 5.八皇后問題 include stdio.h include include include include include stdlib.h 1.輸入乙個自然數 90000 分別用遞迴法和非遞迴法求其二進位制表示.演算法設計思...