529 次瀏覽
在這篇文章中,我們將瞭解貪心演算法和動態規劃方法的區別。貪心演算法是一種逐步構建解決方案的演算法範例。下一步的選擇使得其帶來最明顯和直接的益處。涉及選擇區域性最優值的問題將有助於選擇問題的全域性最優值/解決方案。這些是與貪心演算法相關的難題。不能保證貪心演算法會產生最優解。在問題的每個階段都做出最優選擇,即區域性最優解。它……閱讀更多
793 次瀏覽
在這篇文章中,我們將瞭解 Prim 演算法和 Kruskal 演算法的區別。Kruskal 最小生成樹 (MST) 演算法:給定一個連通的無向圖,該圖的生成樹是連線所有頂點的子圖。單個圖可以有多個生成樹。對於加權、連通和無向圖,最小生成樹 (MST)(也稱為最小權重生成樹)是一個權重小於或等於所有其他生成樹權重的生成樹。生成樹的權重是透過將權重……閱讀更多
1K+ 次瀏覽
Yen 的 k 最短路徑演算法不只給出單個最短路徑,而是給出 k 個最短路徑,以便我們可以得到第二短路徑、第三短路徑等等。讓我們考慮這樣一個場景:我們必須從 A 地點旅行到 B 地點,並且在 A 地點和 B 地點之間有多條路線可用,但是我們必須找到最短路徑,並忽略所有在到達目的地的時間複雜度方面考慮較少的路徑。讓我們用一個例子來理解——將給定的例子作為橋樑……閱讀更多
8K+ 次瀏覽
表示式樹表示式樹是指葉子節點具有要操作的值,而內部節點包含要對葉子節點執行的運算子的樹。示例4 + ((7 + 9) * 2) 將具有如下表達式樹演算法以構建表示式樹令 T 為表示式樹。如果 T 不為 NULL:如果 T->data 是一個運算元:返回 T.data A = solve(T.left) B = solve(T.right) -- > 計算 T.data 對 A 和 B 的運算子,並遞迴呼叫,返回 calculate(A, B, T.data) 如何構建表示式樹?要為……閱讀更多
7K+ 次瀏覽
紅黑樹是一種自平衡二叉搜尋樹,其中樹的每個節點都用紅色或黑色著色。我們可以在紅黑樹上執行三種類型的操作——搜尋、插入和刪除。假設我們必須在下面的紅黑樹中插入一個元素。在紅黑樹中插入一個元素的想法很簡單——我們像在常規二叉樹中插入一樣執行插入。我們從根節點開始,檢查節點的顏色並將其插入到……閱讀更多
516 次瀏覽
Floyd 迴圈是用於檢測給定單鏈表中迴圈的迴圈檢測演算法之一。在 Floyd 迴圈演算法中,我們有兩個指標,它們最初都指向頭部。在龜兔賽跑的故事中,兔子移動的速度是烏龜的兩倍,每當兔子到達路徑的盡頭時,烏龜到達路徑的中間。演算法將 Hare 和 Tortoise 初始化為列表的頭部節點。最初,兔子移動的速度是烏龜的兩倍。移動兔子和烏龜,並查詢兔子是否到達連結串列的末尾,返回……閱讀更多
468 次瀏覽
我們有一個 Trie,當用戶輸入一個字元時,我們必須顯示 Trie 中匹配的字串。我們將此功能稱為自動完成。例如,如果 Trie 包含“xyzzzz”、“xyz”、“xxxyyxzzz”,而使用者輸入 xy,那麼我們必須向他們顯示 xyzzzz、xyz 等。實現結果的步驟。使用標準 Trie 演算法搜尋字串。如果字串不存在,則返回 -1。如果字串存在並且是 Trie 中單詞的結尾,則列印字串。如果匹配的字串沒有任何節點,則返回。否則列印……閱讀更多
405 次瀏覽
在本節中,我們將瞭解什麼是線段樹。在討論之前,讓我們來看一個問題。假設我們有一個數組 arr[0, …, n-1],我們可以執行以下操作——查詢從索引 l 到 r 的元素之和,其中 0 ≤ l ≤ r ≤ n-1 將陣列的指定元素的值更改為新值 x。我們需要執行 arr[i] = x。i 的範圍是 0 到 n – 1。我們可以使用線段樹來解決這個問題。線段樹可以幫助我們獲取總和和查詢……閱讀更多
2K+ 次瀏覽
在本節中,我們將瞭解什麼是區間樹。顧名思義,區間樹是與區間相關的樹。因此,在討論區間樹之前,讓我們先了解基本區間。區間基本上是一個範圍。因此,如果一個區間寫成 [a, b],則表示範圍從 a 開始,到 b 結束。現在假設有一個區間 [10, 20]。所以有三個範圍值。第一個是 -∞ 到 10,10 到 20,最後是 20 到 ∞。現在,假設我們將建立第二個……閱讀更多
734 次瀏覽
在這裡我們將看到如何從 B+ 樹中刪除節點。假設我們有一個如下所示的 B+ 樹 7 示例 B+ 樹 - 刪除有兩個部分。首先,我們必須找到元素。該策略就像查詢一樣。現在對於刪除,我們必須注意一些規則。一個節點必須至少有 m/2 個元素。因此,如果我們刪除一個元素,並且它剩下的元素少於 m-1 個,那麼它將調整自身。如果整個節點都被刪除,那麼它的子節點將被合併,如果它們的大小與……閱讀更多