當前位置:網站首頁>【LeetCode】Day59-醜數 & 不同的二叉搜索樹
【LeetCode】Day59-醜數 & 不同的二叉搜索樹
2022-05-14 00:21:13【倒過來是圈圈】
題目1
題解
看完才發現,和之前做的這道一樣,只不過前一道是劍指offer裏的,這道是力扣自己的…詳細題解看鏈接裏那道就行
狀態定義:dp[i] 錶示第 i 個醜數
class Solution {
public int nthUglyNumber(int n) {
int[] dp=new int[n];
dp[0]=1;
int a=0,b=0,c=0;
for(int i=1;i<n;i++){
int n2=dp[a]*2,n3=dp[b]*3,n5=dp[c]*5;
dp[i]=Math.min(n2,Math.min(n3,n5));
if(dp[i]==n2) a++;
if(dp[i]==n3) b++;
if(dp[i]==n5) c++;
}
return dp[n-1];
}
}
時間複雜度: O ( n ) O(n) O(n)
空間複雜度: O ( n ) O(n) O(n)
題目2
題解
動態規劃
首先複習一下二叉搜索樹的概念,
二叉查找樹(英語:Binary Search Tree),也稱為 二叉搜索樹、有序二叉樹(Ordered Binary Tree)或排序二叉樹(Sorted Binary Tree),是指一棵空樹或者具有下列性質的二叉樹:
- 若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值;
- 若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值;
- 任意節點的左、右子樹也分別為二叉查找樹;
- 沒有鍵值相等的節點。
接著,用動態規劃解這道題(不看題解真的不會啊嗚嗚),
綜合兩個公式可以得到卡特蘭數公式,G(n)即定義的狀態,求解這道題:
G ( n ) = G ( 0 ) ∗ G ( n − 1 ) + G ( 1 ) ∗ G ( n − 2 ) + . . . + G ( n − 1 ) ∗ G ( 0 ) G(n)=G(0)*G(n-1)+G(1)*G(n-2)+...+G(n-1)*G(0) G(n)=G(0)∗G(n−1)+G(1)∗G(n−2)+...+G(n−1)∗G(0)
class Solution {
public int numTrees(int n) {
int[] dp=new int[n+1];
dp[0]=dp[1]=1;
//i為根節點
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
dp[i]+=dp[j-1]*dp[i-j];
}
}
return dp[n];
}
}
時間複雜度: O ( n 2 ) O(n^2) O(n2)
空間複雜度: O ( n ) O(n) O(n)
卡特蘭數
考研時候學的東西怕是都還給當時的自己了…
n個結點的二叉搜索樹的個數為卡特蘭數,直接套公式就出來了
class Solution {
public int numTrees(int n) {
long C=1;//用long防止計算過程中的溢出
for(int i=1;i<n;i++){
C=2*(2*i+1)*C/(i+2);
}
return (int)C;
}
}
時間複雜度: O ( n ) O(n) O(n)
空間複雜度: O ( 1 ) O(1) O(1)
版權聲明
本文為[倒過來是圈圈]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/134/202205140020143588.html
邊欄推薦
猜你喜歡
隨機推薦
- 在VyOS上實現DMVPN&OSPF&BFD·3·配置
- Source Insight 4.0工具查看.S文件
- mysql 中sql 語句查詢今天、昨天、7天、近30天、本月、上一月 數據
- STM32F103C8T6最小系統原理圖和PCB
- ES6新增語法(七)——async
- 【組隊學習】【37期】組隊學習內容詳情
- 文盤Rust——領域交互模式如何實現
- 旅遊評點項目
- 【GPU加速】開發低延遲代碼性能提昇76.33%——通過VS2017創建CUDA項目對比CPU代碼和GPU代碼的延遲(親測代碼可運行簡單可運行適合入手)
- OpenStack基於Libvirt的虛擬化平臺調度實現----Nova虛擬機啟動源碼實現(4)
- Labelme標注Json文件轉XML(能識別矩形框)
- C語言和go語言之間的交互 - C語言中使用go語言,使用的go語言又使用了c語言
- GeoServer源碼解讀 - 入參處理
- LeetCode|3. 無重複字符的最長子串
- 2022.5.13-----leetcode.面試01.05
- im即時通訊開發:IM群聊消息的已讀回執功能
- 初識MQ-01
- 練習29,統計子矩陣【二比特前綴和/雙指針】
- MnO2-PEDT 二氧化錳納米球修飾聚乙烯二氧噻吩/MnO2-P4VP 二氧化錳納米顆粒修飾聚-4-乙烯吡啶
- 量子計算中的么正操作符和幹涉現象
- 【服務器數據恢複】硬盤壞道和不穩定扇區導致服務器崩潰的數據恢複案例
- 性能測試報告編寫技巧
- ASP.NET對Cookie的操作方法有哪些
- SAP UI5 應用開發教程之八十七 - 如何讓 SAP UI5 Mock 服務器支持自定義 url 參數試讀版
- Redis基礎之溫故
- 神經網絡中的反向傳播&&參數更新
- 深度學習基礎知識點(一)CNN卷積神經網絡——1.卷積方面的原理
- 從PlatEMO中提取真實PF前沿
- G020-OP-INS-RHEL-02 RedHat OpenStack 發放雲主機(命令行)
- 解决報錯: AttributeError: module ‘distutils‘ has no attribute ‘version‘,親測有效
- 一文了解字節跳動如何解决 SLA 治理難題
- openstack底層提取所有虛擬機IP和其uuid、openstack底層提取所有虛擬機的所在宿主機
- 安裝mysql-community-server報錯缺少libaio依賴
- gin框架疑問, 為什麼不使用 *RouterGroup
- Redis分頁
- 【數據庫系統工程師】6.4數據倉庫和數據挖掘基礎知識
- PyTorch分類識別例子
- npx hardhat verify YOUR_CONTRACT_ADDRESS --network rinkeby
- 番外篇-穀粒商城的數據庫錶結構設計SQL語句
- 19. 删除鏈錶的倒數第 N 個結點