Leetcode(C++)
題目 : https://leetcode.com/problems/unique-binary-search-trees/ 。
想法 :
切成左右兩子樹DP,並記憶化搜尋。
時間複雜度 : O(n)。
程式碼 :
class Solution {
public:
int DP(int n, int mem[]){
if(n == 0) return 1;
if(mem[n] != 0) return mem[n];
for(int i=1 ; i<=n ; i++){
mem[n]+=(DP(i-1, mem) * DP(n-i, mem));
}
return mem[n];
}
int numTrees(int n) {
int mem[20]={0};
return DP(n, mem);
}
};
題目 : https://leetcode.com/problems/richest-customer-wealth/ 。 想法 : 語法。 時間複雜度 : O(n*m)。 程式碼 : (JAVA)
Feb 5, 2022題目 : https://leetcode.com/problems/coin-change-2/ 。 想法 : 無窮背包問題。 時間複雜度 : O(n*m)。 程式碼 : (JAVA)
Feb 5, 2022題目 : https://leetcode.com/problems/integer-break/ 。 想法 : 規律就在2跟3身上(?),把一個數字分解成2跟3的總和就好。 時間複雜度 : O(1)。 程式碼 : (JAVA)
Feb 5, 2022題目 : https://leetcode.com/problems/longest-common-subsequence/ 。 想法 : LCS。 if(str[i] == str[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j], dp[i][j-1]);
Feb 5, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up