”“”
動態編程的前50個問題Java算法
解決Java動態編程Java
的最佳50個問題
掌握了解決Java動態編程算法的50個最佳問題的藝術,以在編碼和競爭性編程訪談中脫穎而出。
歡迎參加此課程!
在本課程中,您將踏上一段旅程,以解決在編碼訪談和競爭性編程中通常完成的動態編程Java算法的50個最佳問題。讓我們從回答一些關鍵問題開始:
<
h3>什麼是動態編程算法?
動態編程是一種強大的優化技術,用於解決遞歸問題。通過將問題劃分為具有最佳子結構和重複性質的更簡單的子雜物,我們可以將其轉換為動態編程解決方案。
動態編程可以解決所有問題嗎?
否,動態編程只能解決具有最佳子結構和重疊子插入屬性的問題。
<
h3>為什麼動態編程更快?
動態編程更快,因為它將問題劃分為較小的子雜貨,並將其解決方案存儲到表或緩存中。這使我們能夠尋求解決方案,而不是重新定位該解決方案,從而節省時間。此外,最佳子結構屬性消除了考慮所有可能的子問題解決方案的需求,從而降低了算法的時間複雜性。
<
h3>我們在本課程中將如何做什麼?
在本課程中,我們將解決編碼訪談中要求的50個最受歡迎的動態編程示例。我們對每個問題的方法都是:
- 通過示例了解問題的陳述
- 檢查是否可以遞歸解決
- 建造遞歸樹並確定
- 檢查最佳子結構和重疊子問題的屬性
- 驅動解決方案的遞歸代碼
- 將問題轉換為上到底部的方法(記憶)
- 使用自下而上的方法解決問題(TAB)
- 如果可能的話,優化PD解決方案
- 討論所有方法的時間和空間複雜性
標準
在本課程中,我們不會為您帶來幻燈片和演示文稿。相反,我們將使用白色框架和代碼的並行解釋來解釋每種算法。這將幫助您在面試中更具表現力。
在採訪中,傳達您的方法和思維過程很重要。我們的視頻的形狀將鼓勵您大聲思考並促進討論,從而使您也可以質疑面試官。
<
h3>我們將討論的50個主要問題或動態編程的示例是什麼?
在本課程中,我們將討論以下主題:
- 簡介
- 動態編程簡介 – 遞歸,記憶,選項卡
- 二項式係數問題
- 最大化切割段
- 朋友的配對問題
- 法院切割問題
- 金礦問題
- 加泰羅尼亞人數n-issimo
- 較大的子矢量總和(Kadane算法)
- 爬樓梯
- 增加子序列總和
- 房子小偷
- 子集總和的問題
- 最大的常見子序列
- 更大的增加子序列
- 加權工作的時間表
- 較大的同伴鍊長
- 具有特定差異的分離對的最高總和
- 雞蛋下降問題
- 陣列的最小刪除數量,以便最大 – 最小&lt; = k(pd +二進制搜索)
- 最大的平方潛艇,所有1s
- 最大的矩形區域,具有0和1等等的區域
- 最大的矩形子市場總和為0
- 2D矩陣上最大總和的較大矩形
- 最大的全回文子序列
- 最大的全回文底弦
- 最高交替的子序列
- 計算給定的字符串中的所有palindromic子序列
- 最大的普通底帶
- 最大的子序列,其中相鄰之間的差異為1
- 最大的重複子序列
- 單詞打破問題
- 置換係數問題
- 達到末端的最小高跟鞋
- 分區問題
- 告訴Destrestards
- 計算在遊戲中獲得分數的方法
- alindromic分區
- 矩陣鏈乘法
- 更高的隨後總和,其中3個元素是連續的
- 繪畫
- 最大的集合在二進制樹上獨立於我們
- 計數二進制平衡高度h
- 硬幣交換問題
- 遊戲的絕佳策略
- 獨特的路徑
- 最低成本路徑
- 每個玩家有3個選擇的硬幣遊戲
- 版距離
- 背包問題0/1
- 檢查字符串是否與其他2個字符串交織在一起
- 最大利潤買賣行動最多兩次
這些問題是從流行的實踐網站獲得的,通常是在主要技術公司的編碼訪談中進行的。通過解決這些問題,您不僅可以學習算法,而且還將獲取其他概念的知識,例如使用標誌性,標籤,分類陣列,二進制搜索算法,樹木等。您還將對Java編程語言和其他數據結構有深入的了解。
在本課程中,您將在競爭性編碼和編碼訪談中脫穎而出。我們在“動態編程簡介”上看到自己的第一堂課!
您將學到什麼
- 了解動態編程,遞歸和回溯的概念
- 學習如何使用最佳子結構和重疊子問題對動態編程問題進行分類
- 掌握遞歸的藝術並將遞歸問題轉換為動態編程
- 從Java動態編程算法中解決競爭性編碼和編碼訪談中的50個最佳問題
- 實施遞歸動態編程方法,從上到下(記憶)以及從底部到頂部(TAB)的每個問題
- 獲得競爭性編碼和編碼訪談的寶貴技能