From f6b2c82dc0ffa3f8d23181b6c9dcf6aef99d2841 Mon Sep 17 00:00:00 2001 From: krahets Date: Mon, 25 Nov 2024 19:12:27 +0800 Subject: [PATCH] deploy --- chapter_heap/heap/index.html | 4 +- .../two_sum_brute_force.png | Bin 13071 -> 13087 bytes .../replace_linear_by_hashing/index.html | 8 +- chapter_sorting/counting_sort/index.html | 5 +- chapter_sorting/radix_sort/index.html | 88 ++++---- .../array_representation_of_tree/index.html | 81 +++---- chapter_tree/avl_tree/index.html | 2 +- chapter_tree/binary_search_tree/index.html | 8 +- chapter_tree/binary_tree_traversal/index.html | 84 ++++--- .../two_sum_brute_force.png | Bin 15075 -> 13263 bytes en/chapter_tree/index.html | 4 +- en/index.html | 2 +- en/search/search_index.json | 2 +- en/sitemap.xml | 210 ++++++++--------- en/sitemap.xml.gz | Bin 1007 -> 1007 bytes search/search_index.json | 2 +- sitemap.xml | 212 +++++++++--------- sitemap.xml.gz | Bin 1011 -> 1011 bytes zh-hant/chapter_graph/graph/index.html | 2 +- .../two_sum_brute_force.png | Bin 14870 -> 13209 bytes zh-hant/search/search_index.json | 2 +- zh-hant/sitemap.xml | 210 ++++++++--------- zh-hant/sitemap.xml.gz | Bin 1010 -> 1011 bytes 23 files changed, 470 insertions(+), 456 deletions(-) diff --git a/chapter_heap/heap/index.html b/chapter_heap/heap/index.html index f4279943d..e31e6c3f1 100644 --- a/chapter_heap/heap/index.html +++ b/chapter_heap/heap/index.html @@ -3934,8 +3934,8 @@
heap.cs
/* 初始化堆 */
 // 初始化小顶堆
 PriorityQueue<int, int> minHeap = new();
-// 初始化大顶堆(使用 lambda 表达式修改 Comparator 即可)
-PriorityQueue<int, int> maxHeap = new(Comparer<int>.Create((x, y) => y - x));
+// 初始化大顶堆(使用 lambda 表达式修改 Comparer 即可)
+PriorityQueue<int, int> maxHeap = new(Comparer<int>.Create((x, y) => y.CompareTo(x)));
 
 /* 元素入堆 */
 maxHeap.Enqueue(1, 1);
diff --git a/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png b/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png
index 33fca976ab7f3704de7bd37cfc08319341cd410b..a9db1579dde2da50a6b57e4bc2cfdef2d5466827 100644
GIT binary patch
literal 13087
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

literal 13071
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
 
 /* 哈希表元素插入 */
-void insert(HashTable *h, int key, int val) {
-    HashTable *t = find(h, key);
+void insert(HashTable **h, int key, int val) {
+    HashTable *t = find(*h, key);
     if (t == NULL) {
         HashTable *tmp = malloc(sizeof(HashTable));
         tmp->key = key, tmp->val = val;
-        HASH_ADD_INT(h, key, tmp);
+        HASH_ADD_INT(*h, key, tmp);
     } else {
         t->val = val;
     }
@@ -4116,7 +4116,7 @@
             *returnSize = 2;
             return res;
         }
-        insert(hashtable, nums[i], i);
+        insert(&hashtable, nums[i], i);
     }
     *returnSize = 0;
     return NULL;
diff --git a/chapter_sorting/counting_sort/index.html b/chapter_sorting/counting_sort/index.html
index 38912c94e..b62c5d170 100644
--- a/chapter_sorting/counting_sort/index.html
+++ b/chapter_sorting/counting_sort/index.html
@@ -4463,8 +4463,9 @@
     // 使用结果数组 res 覆盖原数组 nums
     memcpy(nums, res, size * sizeof(int));
     // 5. 释放内存
-    free(counter);
-}
+    free(res);
+    free(counter);
+}
 
diff --git a/chapter_sorting/radix_sort/index.html b/chapter_sorting/radix_sort/index.html index dc44dde77..90c4d7f80 100644 --- a/chapter_sorting/radix_sort/index.html +++ b/chapter_sorting/radix_sort/index.html @@ -4198,48 +4198,52 @@ x_k = \lfloor\frac{x}{d^{k-1}}\rfloor \bmod d void countingSortDigit(int nums[], int size, int exp) { // 十进制的位范围为 0~9 ,因此需要长度为 10 的桶数组 int *counter = (int *)malloc((sizeof(int) * 10)); - // 统计 0~9 各数字的出现次数 - for (int i = 0; i < size; i++) { - // 获取 nums[i] 第 k 位,记为 d - int d = digit(nums[i], exp); - // 统计数字 d 的出现次数 - counter[d]++; - } - // 求前缀和,将“出现个数”转换为“数组索引” - for (int i = 1; i < 10; i++) { - counter[i] += counter[i - 1]; - } - // 倒序遍历,根据桶内统计结果,将各元素填入 res - int *res = (int *)malloc(sizeof(int) * size); - for (int i = size - 1; i >= 0; i--) { - int d = digit(nums[i], exp); - int j = counter[d] - 1; // 获取 d 在数组中的索引 j - res[j] = nums[i]; // 将当前元素填入索引 j - counter[d]--; // 将 d 的数量减 1 - } - // 使用结果覆盖原数组 nums - for (int i = 0; i < size; i++) { - nums[i] = res[i]; - } -} - -/* 基数排序 */ -void radixSort(int nums[], int size) { - // 获取数组的最大元素,用于判断最大位数 - int max = INT32_MIN; - for (size_t i = 0; i < size - 1; i++) { - if (nums[i] > max) { - max = nums[i]; - } - } - // 按照从低位到高位的顺序遍历 - for (int exp = 1; max >= exp; exp *= 10) - // 对数组元素的第 k 位执行计数排序 - // k = 1 -> exp = 1 - // k = 2 -> exp = 10 - // 即 exp = 10^(k-1) - countingSortDigit(nums, size, exp); -} + memset(counter, 0, sizeof(int) * 10); // 初始化为 0 以支持后续内存释放 + // 统计 0~9 各数字的出现次数 + for (int i = 0; i < size; i++) { + // 获取 nums[i] 第 k 位,记为 d + int d = digit(nums[i], exp); + // 统计数字 d 的出现次数 + counter[d]++; + } + // 求前缀和,将“出现个数”转换为“数组索引” + for (int i = 1; i < 10; i++) { + counter[i] += counter[i - 1]; + } + // 倒序遍历,根据桶内统计结果,将各元素填入 res + int *res = (int *)malloc(sizeof(int) * size); + for (int i = size - 1; i >= 0; i--) { + int d = digit(nums[i], exp); + int j = counter[d] - 1; // 获取 d 在数组中的索引 j + res[j] = nums[i]; // 将当前元素填入索引 j + counter[d]--; // 将 d 的数量减 1 + } + // 使用结果覆盖原数组 nums + for (int i = 0; i < size; i++) { + nums[i] = res[i]; + } + // 释放内存 + free(res); + free(counter); +} + +/* 基数排序 */ +void radixSort(int nums[], int size) { + // 获取数组的最大元素,用于判断最大位数 + int max = INT32_MIN; + for (int i = 0; i < size; i++) { + if (nums[i] > max) { + max = nums[i]; + } + } + // 按照从低位到高位的顺序遍历 + for (int exp = 1; max >= exp; exp *= 10) + // 对数组元素的第 k 位执行计数排序 + // k = 1 -> exp = 1 + // k = 2 -> exp = 10 + // 即 exp = 10^(k-1) + countingSortDigit(nums, size, exp); +}
diff --git a/chapter_tree/array_representation_of_tree/index.html b/chapter_tree/array_representation_of_tree/index.html index 6e1b69238..799269f21 100644 --- a/chapter_tree/array_representation_of_tree/index.html +++ b/chapter_tree/array_representation_of_tree/index.html @@ -4632,59 +4632,52 @@ /* 层序遍历 */ fn level_order(&self) -> Vec<i32> { - let mut res = vec![]; - // 直接遍历数组 - for i in 0..self.size() { - if let Some(val) = self.val(i) { - res.push(val) - } - } - res - } - - /* 深度优先遍历 */ - fn dfs(&self, i: i32, order: &str, res: &mut Vec<i32>) { - if self.val(i).is_none() { - return; - } - let val = self.val(i).unwrap(); - // 前序遍历 - if order == "pre" { - res.push(val); - } - self.dfs(self.left(i), order, res); - // 中序遍历 - if order == "in" { - res.push(val); - } - self.dfs(self.right(i), order, res); - // 后序遍历 - if order == "post" { - res.push(val); - } + self.tree.iter().filter_map(|&x| x).collect() + } + + /* 深度优先遍历 */ + fn dfs(&self, i: i32, order: &'static str, res: &mut Vec<i32>) { + if self.val(i).is_none() { + return; + } + let val = self.val(i).unwrap(); + // 前序遍历 + if order == "pre" { + res.push(val); + } + self.dfs(self.left(i), order, res); + // 中序遍历 + if order == "in" { + res.push(val); + } + self.dfs(self.right(i), order, res); + // 后序遍历 + if order == "post" { + res.push(val); + } + } + + /* 前序遍历 */ + fn pre_order(&self) -> Vec<i32> { + let mut res = vec![]; + self.dfs(0, "pre", &mut res); + res } - /* 前序遍历 */ - fn pre_order(&self) -> Vec<i32> { + /* 中序遍历 */ + fn in_order(&self) -> Vec<i32> { let mut res = vec![]; - self.dfs(0, "pre", &mut res); + self.dfs(0, "in", &mut res); res } - /* 中序遍历 */ - fn in_order(&self) -> Vec<i32> { + /* 后序遍历 */ + fn post_order(&self) -> Vec<i32> { let mut res = vec![]; - self.dfs(0, "in", &mut res); + self.dfs(0, "post", &mut res); res } - - /* 后序遍历 */ - fn post_order(&self) -> Vec<i32> { - let mut res = vec![]; - self.dfs(0, "post", &mut res); - res - } -} +}
diff --git a/chapter_tree/avl_tree/index.html b/chapter_tree/avl_tree/index.html index 492176215..d84e650b5 100644 --- a/chapter_tree/avl_tree/index.html +++ b/chapter_tree/avl_tree/index.html @@ -4062,7 +4062,7 @@
/* AVL 树节点结构体 */
-TreeNode struct TreeNode {
+typedef struct TreeNode {
     int val;
     int height;
     struct TreeNode *left;
diff --git a/chapter_tree/binary_search_tree/index.html b/chapter_tree/binary_search_tree/index.html
index cecabc001..097e0d963 100644
--- a/chapter_tree/binary_search_tree/index.html
+++ b/chapter_tree/binary_search_tree/index.html
@@ -5127,7 +5127,7 @@
             // 删除节点 cur
             if !Rc::ptr_eq(&cur, self.root.as_ref().unwrap()) {
                 let left = pre.borrow().left.clone();
-                if left.is_some() && Rc::ptr_eq(&left.as_ref().unwrap(), &cur) {
+                if left.is_some() && Rc::ptr_eq(left.as_ref().unwrap(), &cur) {
                     pre.borrow_mut().left = child;
                 } else {
                     pre.borrow_mut().right = child;
@@ -5148,11 +5148,11 @@
                     break;
                 }
             }
-            let tmpval = tmp.unwrap().borrow().val;
+            let tmp_val = tmp.unwrap().borrow().val;
             // 递归删除节点 tmp
-            self.remove(tmpval);
+            self.remove(tmp_val);
             // 用 tmp 覆盖 cur
-            cur.borrow_mut().val = tmpval;
+            cur.borrow_mut().val = tmp_val;
         }
     }
 }
diff --git a/chapter_tree/binary_tree_traversal/index.html b/chapter_tree/binary_tree_traversal/index.html
index c46f015d4..78e66ad09 100644
--- a/chapter_tree/binary_tree_traversal/index.html
+++ b/chapter_tree/binary_tree_traversal/index.html
@@ -4392,40 +4392,56 @@
 fn pre_order(root: Option<&Rc<RefCell<TreeNode>>>) -> Vec<i32> {
     let mut result = vec![];
 
-    if let Some(node) = root {
-        // 访问优先级:根节点 -> 左子树 -> 右子树
-        result.push(node.borrow().val);
-        result.extend(pre_order(node.borrow().left.as_ref()));
-        result.extend(pre_order(node.borrow().right.as_ref()));
-    }
-    result
-}
-
-/* 中序遍历 */
-fn in_order(root: Option<&Rc<RefCell<TreeNode>>>) -> Vec<i32> {
-    let mut result = vec![];
-
-    if let Some(node) = root {
-        // 访问优先级:左子树 -> 根节点 -> 右子树
-        result.extend(in_order(node.borrow().left.as_ref()));
-        result.push(node.borrow().val);
-        result.extend(in_order(node.borrow().right.as_ref()));
-    }
-    result
-}
-
-/* 后序遍历 */
-fn post_order(root: Option<&Rc<RefCell<TreeNode>>>) -> Vec<i32> {
-    let mut result = vec![];
-
-    if let Some(node) = root {
-        // 访问优先级:左子树 -> 右子树 -> 根节点
-        result.extend(post_order(node.borrow().left.as_ref()));
-        result.extend(post_order(node.borrow().right.as_ref()));
-        result.push(node.borrow().val);
-    }
-    result
-}
+    fn dfs(root: Option<&Rc<RefCell<TreeNode>>>, res: &mut Vec<i32>) {
+        if let Some(node) = root {
+            // 访问优先级:根节点 -> 左子树 -> 右子树
+            let node = node.borrow();
+            res.push(node.val);
+            dfs(node.left.as_ref(), res);
+            dfs(node.right.as_ref(), res);
+        }
+    }
+    dfs(root, &mut result);
+
+    result
+}
+
+/* 中序遍历 */
+fn in_order(root: Option<&Rc<RefCell<TreeNode>>>) -> Vec<i32> {
+    let mut result = vec![];
+
+    fn dfs(root: Option<&Rc<RefCell<TreeNode>>>, res: &mut Vec<i32>) {
+        if let Some(node) = root {
+            // 访问优先级:左子树 -> 根节点 -> 右子树
+            let node = node.borrow();
+            dfs(node.left.as_ref(), res);
+            res.push(node.val);
+            dfs(node.right.as_ref(), res);
+        }
+    }
+    dfs(root, &mut result);
+
+    result
+}
+
+/* 后序遍历 */
+fn post_order(root: Option<&Rc<RefCell<TreeNode>>>) -> Vec<i32> {
+    let mut result = vec![];
+
+    fn dfs(root: Option<&Rc<RefCell<TreeNode>>>, res: &mut Vec<i32>) {
+        if let Some(node) = root {
+            // 访问优先级:左子树 -> 右子树 -> 根节点
+            let node = node.borrow();
+            dfs(node.left.as_ref(), res);
+            dfs(node.right.as_ref(), res);
+            res.push(node.val);
+        }
+    }
+
+    dfs(root, &mut result);
+
+    result
+}
 
diff --git a/en/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png b/en/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png index 6e942957ada76c5fbb8446d7940fd4d55a54c3d9..8481ea4eccb6b4655ce4e66fed53043ce788542d 100644 GIT binary patch literal 13263 zcmbVxcT`kOu;-mX&PYaJB&$diB{L`>NDz@MVUUanND>6}f@CC1PD4gOGDv0=CFh(O zGLnOm!;atg-g&!c-+5=x_8+&q`gZtL^{?vI^aN|DKO!S$A_f3}Oj$`@69DjVO=v$M z3|Adz-7&`r5*n&n3RhQG%gf8Ybv}}kl6Ta5f`fy#6SbO~n=#WEEEb#Do$=$x59~Hp zT3R|WG10)l;NioEi;GJ=Jw0-Aau^IoR#rALGO~22#KXg5X=%yY+Inqnr49}bmzS6R{{FhUx_|!s z2@4C;($Z>aX=!L^2y6&YQ&Srl7)VP?b9Q#taU4!gPL7LimPf8i|7xoo~goKQbk0&K1DO(Jk zo}KLN?NwA%n0gF#FLpn%9W2I`!7tt2-AzqRZ%aK=idL6*mr{SEZ2sPiZi#B2Yj2!v z*xo&xSfBVg_e0)v0Nt7Xt!sDd&sKa({OZQZ%;t1){bu*T!pPc)ahlOAcF8k*OgBmA z==kE~g=xh`p(p>G{4viotNON8HdtEU zx|3Zx-PFE={xThq>3=+}KnMUr8p`r=TJDpZ-+XY)0zmY|XZp|3zs>)@f;z+^|C!l- zRYj$x{XdoQDzh=}1zvEmq+yPm*Z}rI#Z!al={p62=VfY@H$d=dy3IV5INvz(paANL#)h?>~MWDd;I_6P9 zsH_RS_E$I{d|3hTe^!PbXQ3%n*r)nj-l_u#j#c1Z9U0@$=GWF-y=L*(fK_G9`QEeZ znD~OepVOKbd_ZJj(-AER>L;^MnA^yxt)x9_&AWbV;_LI~S0woNPUI%et_jVQ+CF-c z{6b<@a#79bvU4ckT^ZQf-fE;2DXBx?Rw!mJtEy$|t5V!A+%DQ=kE_LYb7i)(oX#80 zR4%vY;0te08LY>f=RmG|Wa_5aA{IJbjW+)%)h83D(V^w*zeH(_5qOL<$XY5FH11oqHvNIe8dy@$L9`ReWy>A zJp-nnpT6Z*n&Cd_uDXz@rwyR;^Zr+DlUST(_DNA$1J=rdW7W^)s4)jilF5>LRs7Dh zQwtoaM8>}6(3-5M5f%veQ3}R;Ay>QJ%?nxtvpf<~g^gGB*-p4`%&Or#TG*^y>W=W7 zli?#3iy=~n{8S$wZ6PG$@pr$64f7LW8!0{yju`veeJ&;f%$FE2vYS&vDlJF`d@Mab zHva=ZyHK*0KPj;hpG43@c;JKAWh&pwjD%g+b$I>z@6bG+9P|t5mqlDS&;EIlolQ(_ z;Mdeg=``IV@aD)nZ_-fW5324a&{D;MW~xdy*d{bY6J|;i?vb)*Zgu*q1rLR^va^8_ z$K3irZ^h#>iaSxkL1D(mA}w>U-Tl)UU-MK!AlRBfYUK0?OOCz>tWb2T$S=NsDrOM$(m` zT0U(4l)6uRnUU<1VVyM=O4|e|H?4w^-#71j69;}2k0ROnHD-Rj!?db;H{++;!*Y&m z@7;K2(K9K;zbfJEnW?1>f@`_Wuh-@Y4(u)Hj#Uz!ysc-u4WCo`l?D5DhAA@2%U^Zn zkA0=gk0~Z#&-BjRCVqbBVGACH13aFNh<{vi>1vV? z7rp9@fWs(Oo(s*^EUMEy&zc~G5lRJHpA+fn zN_LL3j(7`#{*Z2WE0?T~6q%-gk2fq~hIjD;FBzg#2Bh85x?gaNxCJ9DqChnaMJ&X$ z1N&yHmqx?*i(=vL-H9pKCyWe&6NO#vc-lVtsIo+7WK29puxL_}haZzHYrygDkHKC$ z7EGs)@m$vQqk`vc5x)<7Rkl4lTErUzrEXEdl;nQ^)Ko&CygVs_>aTcp2R}0C^7(s* zL{VdM%a}54c2JsQac)$2E_EeuLE(w?lN7&Jg?4~?pqUtb9}^|sEDcHsw>*b3@VUA; zJsZe$lmZOmX%@bl0l{l*c>PSkRHG>@+|?PlwrUQH>zD#90Yo_mt6HVJ32R6?48h;+ zJOCrao8nqIj{sIg#!`RP2&DQhZ-Jalb>~(59C0#t5Ig2 zR^)uz_WBYYK@P@#Vg_=P&KQ(E2y+b2*2^g@(Dqv70(+^@8oRd9&nniR$WYe=S^js?h1Z@nGQF?&1h>ZAO2FAehB3ZwUl z6b+Hr#uLP^OT7n#K{yL4?t*=*OVTDpXqFs^*C!`(yKKWpW zVA~>9V9$mtLdR_B;ylS?io2b#bT!i)Xt`%sxDLDpzu_#S_Zj%^HIc$p(>x`D5u)_W zv;*=mT3WQot|J9oLRAK2CQ}!l;LIu@SWk!fvQbAq8MEqX?^_8-Q(C~RC;D4Dq2ppZ zU+?;`{>4-a*bmqEU3lFAJ5ENo_EHYEJXgq)5kBGeoR10m@eVV~0Y#AG6A>0?DbY9* zRCenhd#(~ZO3Bafc8)04mu9W5{Rs8Rc3p@kL=(A>;Pron^pJ6bTO$7q$Ci9h{ZfoC zsNYec=9LbFM-kamU`f!y>rh@_{_r~fIRYgutG&~P=8Oe8s1j?=t+Z+t*m#T+i)=ns zvJ1TXQpl&C{>*+3KgMR36~jgOi5Ls0+ut(&4ahHSD#Q9+lg@dsUs&#hKjjGU5&RhP zIY2I6DL!=b<{?u2>2|!Lx#S}{Ym(*0(R2S~3g!>prZUYk{3VADj}{(DrS%22P=fCn zkymgCTmyhWXpl$%0;l}vfpW=QNHbv3ZZOq?5_S^^E~Xi>STvY^`YV*SN!LoOmkCoN zQGo-&b@~a*Pk$ahy$69?YW*GvWu7b*4(Z7%>&VA<{H)0PR+YKK@cN%|Nv7nFc0l~8 zgN5*l7PHPHM&?H&#$WLqxBe6-=GPDptv#sS*>_;0CKJYNk+PhU1UvgvB&OhTj{7A6vi-kjYyVRwr|sV;X{p9ZxF~pO zRbVkLV>GU}e9h3RHV4%>#bxwL}p_g-ynWbZ2} zO^W~OiF~B{PuzE;^;nrvkm)LVXxb`co(=&dcO*L51B9n?j}>SrLH%vg{h*BLx|{E) zfCRCagd2_Zm+U}kdrEKw!~Uq+UMPSWl+BWQ!Ap_6K)=V$fVm<^(FuLJN%~V@fgO%C zm}NW(y1{lYk$#Vr0aGPbk#K|M{EWR=4xmIr2|<7w3BV%(C;|jzvuR3;kW3 zEeC#m{vtDsBSt0=NAhcG1H~EE)eA|9h#;@X+J6D?Of+W8LhQ!;U1Y$#JXRtExCAN6 z_E?ru-IlcdK`mQZ4>erWY_#9aC?O-M35YN9I<-; z!t($Uz3&|(J#OmkQe5{wQ!#fc$u<}vsa;V)3Sff1+4$OSJwd0FNA;R5iU%i zXI>K!V)Qp5P)9ll9LopA3HtxM-;c|Jpv_9*`2TjoDZz?y7;c2R4@4}KOAxT4LIS<) zAdvF&>o=Tt*91u7LIGmSd^IAopES(vfeEsGLCB!oL zC>PVd6OHGQ1F~DkBUcvnQGiVc1GBh|#363dOmnq9{2CHaBSsxW_~Iz|TOFLTBkN{G zfS(dtCKnj|o}qwV{74)Ks1gAA>)n_rVE>gMkV1w4#F&xW0AyGQ?2Gg5y8XVn+8UUE z!8MwJ;s}+ARZIA8>sj9Y5`C^$Z`2ChLe9>9rpiMa?h9~vzhU=!LFpJCT+7cs7q26~ zWYz)`t3`8>a45r$t=>Byd!% zvNFW?8o7i&IpUW+Y~TgE=HIhb$J4jSUM*yCG!{%6k)f8F)M;_E7I+Z;-|KFkaKpmL zv3|2GR8di;TWY27%VidFY}#t$#hr3Sojofrm!*>vU4gz)e8+c6Y=ppALRL|DSC%5d zt}nlma)de;F}B-n4*@d&TnO-^lXlpt0S=q5)fzBk?n~Ug2^gA%?<;T)tpUaZQ=0n* z^&~t5jz_YdZw{yx7ziBC+YX*h-dA}*VmF{n*Puj<7gdTEI~j^s&mF{NO&k?VX%oaF zSI3#{5{0HSi$T{DP+U0l#EB1YN=TM(ZXbKe1{&e7oG*J=rmZGswzsAOZ_hc9Z0~`1 zMHfv#uT4vktNi}6D=O@@o3&q(3RnD^ub?#-uikdC04t$Q^)TqM&Xf}rBaz!6{;1qJ z_p%R=9Ab}V(N$C7+6#g3RemDfJliHGL_0sEhlAd#`VsN+vx#*$&26uE^o{$mHyxJ& zetV_%n~sluQR4=PZ+Nob4jU(tDlGVrS|GvRMu-heO`U0w#7iS*#Jt<02Izz>8X9=_ z2kx?iy?XTp;e8ufj*#Cp1O^7i{v>G6ksAP?`FX&Y{5@t@rjO1RygWt{w`ncHNzq4-#D)nSb-VD@Ybm@uYFgu*eWAZ3##XD-d+#E z{(whDutN|aoDvt3L4c14(FZ{Em@zfigTG>cf>^=$g9f1KdX;=~)N> zE!AOvaS@}6TLI1Pj9@B30%*Ay?5De|97sTvCbXLwl?H+4SLyMY`g)xts#aH5b1!Z` zQ54>GkfI)g{*yf59-FZR3tURwKFo6#R?g{we1J&Ol$gpZ3c^eTzV7T(V zsxM@m`z=8x6s&r*00XPo6rcc<5Wrz3MBtJE;NKJg9Rd{pert*QfW&kii!JCoTmt+@ z?Isf$-AgSM)EGvi)NWGOE}!3@&+-J8;TQq8?cJPUvGB#?wlhlV8nx@plcP+duM)XK z{hlTEYU*ZKW{zv77wIq&hSaPDBmVp#kn88TxczoAJ$~%BqRSi4x{V_bX~~+l9fG6A zoiXI7thz~+7et4yUJ5*^4;v;iJP}kJJG)`>2YzML)4+TuMrI+vub>Y?X~y?^W|N|*c9I&hBjiCkn?xC1dh@C0^s78 zkULR}ggREXa14(yIo9%Hm>JqeM3jI^NNs%N!~Av{)JiYW;Q0|$&+G;PLKnsKEyN2t zhTjFab@1``#PlK9bIW|a2&(HPK?*jQH9=`_o@1<7D6+?VA7V&W3{~Q}?f5F1hmvYY z4^r*Z#CuLKPL8D!hogB~J=gfY$yMHobhv?A14;@b7$8Pfrxzv~wyvz>2P zyOHv$W+!J!ZC{n_d@Er=zu1lZZCpOFL(ItKe@MlZh+z4c+9)R>d=+&B zX#M4ve#u-W-$nFM%TV?gh_1c`;{7u!5|m5_lVO)?FG4ltV@rjOg>oT=-Lm}L4kF9p zMBYV$c5duFOmU%n5ijMJmx$UUlmDR5aamL zuBfzE4=JfyR;pz;+U_hBiO_=>r`WG2>H~pmZ*%D}H>v^ni?DOp zi;F z=IP5(?xK&Cnt4>Wsft3WUdR=b*$F9qS2mv^j8dX<$q~qSGvORCbzmnje{v;5zslt$ z&?|n`9HfuaG$9A4=0A<)*3IpdnuH+%hiEzs_GE19c?3z2xJiP4(DppnC?VnGMAl3T-iH-PN>Zo zI9mANz|8l3%A66mKrQf&X9|K}-R=Moi_QiH>6zUDbt{T~kDihPDcbtRnDa;b#PUCw zUP9~~^Mm_)ZtmZ!qEPw4d4GkWM3Mf7*JB+Z)C}@NlV3$g@-`)vb0syK)d^!zkix&` zb7?h4uE`K!%1g}j#c%hbZ|XsXL;1(6?i;N4qCq_NbQv9R@9j(hj70 zroVLwUZq^=1rguvdhCUZ3(-P^{nQY65)NPmoYEQxw}%>u)`t?_E%d5YtCgj440);iH*WPV+4>QX=nhkvO9Ci~lCihvK(3=y`^{P^N| zwDG^fhI{kP2K*jS#j3K_@ z*6-f}_+wt5SS73eEA*ztyc3?|?h}E)Z@E|z3bU=C#P-+_8d>|_B=qC5jMB};SjC75 zv_4OZCaFJ)y8*;H@eua&{kQgbsnKLf2|jjNepv@-Wzyq}1iOGGX@`GAf-Aq5ul_*t zA6r35?-p+0r;n8!oD%$vDFAS8kr!?QfN}sx#-@jDZLVlkSpf{F{{H9r|53QtI!U>^ ziexZ(%U|VLkndmKq%@|rbDF5HPrF-=`#7KPzck~v^fP7PC=VdHt;_$`)R?spq8so0gSbyf`TV>{aJ~0U z{UQOyIIn9OgeP<;b7jCEC+eyOwSNdINT7@&pwbq)!A{ZlBT%yg(9EIr%Cohhzj~vB zyX*>qYXp@+ygV~%zAc`GsX|}(&Pzs#FciFzq~m@%Ce2o%iv6qv_%kqL=x8mZssqWf zT>3vbS6ge#w|yA!-}&LD=LHNL(h)2yg`Zi$BDOMMdZMYKs{7$&7BellcySD&M&3wc z;^vKJkqQnZM+mE_-tBwSSr;gzpgvE4Te_z0JtM}PDs3~#=jmnlP0`P*mv=`3AlL6pCs$I6>38I2XsG9>JtjlB z=Loy<34onsw<}tvMqoHYxDNwvTa)h+EskF1Sq!GUC*gc`MqQld4M)9AGk--3Bl65O zt$Ut4Mikvhjpoy6SQj_Xc=?eW<$Z{`Zg`7eEUvzO`i;s9u1(zwsJ>)to1!mY^FGXd zx-UjjgrTNv%jl?hk?l5lZPZ|iC8u3<^~Ja6dFn?ymkaKJF2--SzVJt@R>lcsr)Wrz z6upYho%wFM+mLPN`Laecm1(^4r41lHr4B9aJS<|yRL$dHQ_U8$DnWUFWZ^r;-Tj5X z>z(MLDm*`8%L-%b&_?JZSfcL$zg8bFggttUHYMmRL!onLL=KEeN$eYa0i;(ywy5S%! zYWP{5Y&y~ba{VlQ=4<;cOXcN&SS!8;Bk4%o8Ml$6y^Y>d++CYaGq+p|C{S@`+-B<) zj+?S`xKW|L0z?xOPBAvHpG}-9`1)5?BO=)&MhB-t&7HJ>v!&PGwa-vJ56W5};M9mI zX$1Bygoj=~A21NIS7SX^dwVf^T(4L>gBPiummtYZI#@#I1t%Z!87l`YTYK*#;J7E@BI#XsVuX_EPpM>LEy*+Q}i;U zgT1cy;q&;_=o_XNxeCV6^S!on&*+gOrXs1PIKI~4@3o6zxB_p zc!GL3>)jpStsd+K9BPW^N+mp(-2NbO)Mph1iSmmRk8Ta(^4#axPoiBB0}C@0=DHmd z&X|I+p-E_}+_pb-ZP}a*){~X>s>qqOn1Z~%w1Esm=E2OlzqFl6cIa!8aF-7Bg$$y&QfPMuIBEv1v`v6y0)iPr#I`rrSyy6WQE>e;H-SbflTzK0Y+o<;*i41_A7&k^ z!0N&$>3;(QF}4kE6F21{0KT7WkoVWc5Cy6(>+Z*`Qgfy@We5;vKT%$JxitW>yP0Db zZRCC{rI`n;$fhMnJ5^}_RliKCS2BBi4iDRbg1pm1AhTy8w_}rTD~5mZpW~h^mht`@ zTX?}y$jkeym|S{fO8L{@#?f&-Sp_zN?n#kB%AL4<~ECfUK*b8xq z-F=t3qMZ4-4c<=#OS6^$gF}1HJXGNW0cISSeQN>?j%ZRzH~GArm|vELc(u(20k?EX zaONrg%6)K;zS55WI`U$?1z?SCGoi=a>bbu?Nw-QpJqpY3X04c!{Oe_TBv`y!3iRv& z%-tB_5#}S3G{j(CZ16_ll;w)6?#Zk*36$B6K;(*v3d0ri1$9JYVBXtIvC@iPN_|dq zY^Q}&$|JF88t?C(mZF63lJ_)#hiz%Z>sq^3Z+6JgQRp{6Uq$1oP@rWb8;oTCZplN4 zWnwJ3)R#a^{6L1vNxHq-)*903yfeP5FvnA`P(-FE`}WpL<~lZ6)Wr*NL@nu^W)R2d@&wWyB*dVf^PWygnPp1~L- z+=k3Iq{y_^ibmfYxjO)_<&PXoJC|<$2G((*y6T@$9Re(f%Bq-Rr5OWP2RRRjoUE3& z6`F^+^$`&$`8&5maiBlnx6=$JQu7im2)yPjd~@ZuY!C+gjm=05FSwa z{^t$eM~`3Hdy;p!Haq0)^70I; zYj+MkcS_`8oa1?R*||H6yeB3Xd=6OOFY0Bj{WsX|d~mQ>avDu|q!UM}sY*N4>D!;x zm0)f&S;s7!D*4S^XPZMSrZ`TGHiJ-2msMZ$ z2@vl|U8zN`?nJ9o%f|f81NLH9YC_T<|4j^zAM4P{#{XAxz+Uj;fjq0c)=$46si6E2 zA}SBcr?l7D_Ys-5xaF7TP5ELAj!U#u>SI{n(&17Fsr!F33W|qUj~-T+I48&(9Z9dx zg!|uc!e_e3u)5JJ{+|OVu;dhiQKq~bO*35jc#ifdu&mpw(!UL1)(i|g=}*!xzeQBY zc%Pb^LW$6n5i}U$KEV!}M9op}ih^H75cjs$wN4KT=_%lC9^1wdy}-M+h_l6?q4e)j zf5%^yzj3?s%KSCMTwtE2??=n)9NhXH{v+tuYF;1K9{=FA{lcKJhv)a=7fH3&gpHmP%mq^wct4+nvQLe_nO*AKg!bih}j5#D1^M7UYq)k+pZzs z=q(hAGyJ)qV!-QogE*4Y;k37-H%C5mD$8eRh;mk17>AQRj8HXH0fpbZf=vF*B#Vvd z(xi#b>Z0aco{yqJf7{(5EPXGcz)k?# zuDPVp0dAc(Eyau70pH1$+dKsL=zmjbrP|Vj31@wM=oUq~8eoww1z+q8N*p#D8i0grE{5P+ctKTECiM-g4 z-+cHx=)*_2H+&@5;9ODslQ{b5ioXa-rYc9dh?dC?G_bS|co#7@%>3e3umh2xQpwVx z#~J$jO>k%*n_FHe8MpXEGjMr=3*b4pMD^kGv%wi4Or&%CmMd{1)6er#2hV~cVp4a5>b^)m zNKIb4rVXA(Qdg-;CUyl#Xfi?YgR9tlMy6%%dwLd+4tnyZOGj*7Z>CMI%@n{OgAOys zZ*2>lK+icJeGk?}+Bi7Oc~=Xp|A!XJ21Ec%nZLzNj4<9kL13x-89?+_b1m}Fn&Um5 zA7#-567(kn$iC}jtOVbC;^CnUE>Asz?z9J%_umHeZws~}2pZjVuIsIc(Lf5kIkj_> z+Kt*D_s#F6bra?IPZSesuxVz-C05no$CpV$wWwdh^H)aMU=2=OZbT`y6zR92Qc@Qi z>&MXJF7J2m{01{K6G?cP}R;p?!w3{5KFHx^KFth!%G{b4_n$Drw^1hHK}D2wGo zN4lEWX)^dY{0S=y??L#?6%AI*EG>-PkdXLK8HJ4Vi=q2%dTCRcQ~B)3S8Nx<+#=Pw zbtEz(-9ZluVK=nFNt_A0i|0h%J^~-V2m?l@-$GbpA9G=3qS%7GKX0XD7RTr4Sydou zAyLiQe_h%u4~Vh*5cqyd^xJKx>V*KgR)i8B^b>hPA)!WX?BecQlh)wfaA5h2>zY^b zEaPCF!twpqTIFz(Z`@k{+D4f44N~+KfvFyN8I%OClru3+`xWk>hX2(~`=t}JPftK%+M{J(TyVF9v{J2EU40=?go&Zwx zt1&nr`{@~b!SLZv2@~)I&F%zYKk8Tp@_k;S^KMkeK6z4@NJ8Zk zVl4U^M@a()TP&=8e!wmf}Bee{-O0Zzw9BHtT@4iQ-P$0vJS@F=)HJ-Ujr^ zni%pzhj)O!pC=~iBpk>O^S4h1b?FV>zNc?W^hNuK)drAhuV z18iT1RI7uUUR+l~V(f(1<=Bf({_2(g1nm3u12TT?V+POnHpdP(=Pw1o1WCM`lMW9? zcZnVJd7uxn&_Y())sb;)!z6+`>BIw=FV3Y zv$WCrh?hb~!s{iWZ=7>!GsHs|pEd$zik86m&8ISyC|JwGr>Vf7XBFgDr&(?<5m~I| zwJogU++RWReFd|%BmPl3v_WpF9f`u6xfJA3NLWJf%+I_qT8|2yZrsD-c!06EJa?R% z8udPY$T}<8#DVl+!S;GgHk0o@*%Oo9A*YDIQqNGucc<*+_5Gz`0h&pTvtGG65cHuP zd>kc(bcGmHDsi_}LVuXW+2B!fq#o|q{Ul8M7-__u&yIO2Ob|czpv?!!Q#QCG0a?$h zzEdu#+WQe>m1;iDZdDHGC^2SK10%u@Zwe2py@hVx(MA0iI+tT)G=9i~7p$Ida2Lfn zQ*-c}J@Ev(k%lLW%s4h>r0qbTM0N`xcb$Z}@Ixa*9^bN0*n^Kxr{DMzd!vTN3vx*} zZiTRl>K%pL4EgOAlf3NeUiTs@>aa$)@vIoQwscqOTf-3^@9B6Krz|eqYUkzF@d=B| zgc1|@6L#!TO;~8GmCg$h{JG&hEF7Gmkjr`!R_#xcOy8j+TBf>Al}+Jvo8~CH?a&T; zYM8J)d~u(pkppSC6WX}YAj#-Of4sYeCzYwInI33KU@fRcAUd89lJ(%pOZJdS(q=}a z>x0zPd!0r1!u{;~MBVJs>L==5rofwYfH`@{}d`7gx8HBMvsToI&4E_94I7IPi{Tof};YzYlyq zxABt@gx+QN2s9_Lse!Y~kz9L>wL$;c7ssX!#?Ey*%%7KErN1Sw^YL3oHTcnqHKFrUW!QD+x{%IYMkRDz8>)Z}*TWCU%0q%=! zC7|2K-LHu_5|_`g=Ys5>Yn2f4RHzuVnixgEzYHf-#27$6f;prh_F8W2r4O`vP*ww@ zb4oz0XWM}M0C$U)J+64;^`qg{N+;X@c{hh?o1Li;BldrK{k^6%ypZhPw=PkXMbwL@ zuPNa-6l{|*IzBXVrPSO;GD`ce#{3i;d~#1r@wJR3I5Hc$ko-|*u{~6C!%cOes-WJ9SF+b%*Q=^Uy822X({=t19GErB z$W@IF8*rhXh72#6t^T<={31tRTm(#h@ZtFN-Eo?4pZh0&*wi}s6mDpP1myYHrok}@*odyqyONCb$i9f4; zXP#r%>RFV=S@(F17-$F_dG^I1Z|m+Sf%h=4@NxYy5919FOW=t?@U-jATyI{rrrtl@Vw&?g-DeFe5+{?1udtF^@|p?x4Fr*H_5V0~P0`qg^U`G7>7H!b-onE$GBk zliBPF2X971w2M-`-Z8~tGWuf6nx2So(lDxlS&K9m4z-6UWo3xRo3(qF7*{67e$#(; ztuQ@;W$JWHFyDeVA|g_w#H7h%YCh;MzA)P+?Jt(TL3>jx;^2x9=v}1KbebA#JeJo= z)cWjdvVD#2l*#*GOnsGg=Zs|Zp@)~>c#XDN!F>C=esPA^CLDN2@{(sxEBVI6Smc%A zW%pSGi{!@Xz~G3U8{1QvTe9H*mhIYCS2ImA9A)lLWgQ+iU?Im8uaeG|x&M=T|8tG? n^mJ7EI|Q+I_0lBaKL#h@1rsDvl?dqW{OwRyP?s-$fb#uc-lp)T literal 15075 zcmd6OcQ{;K*Y}wjJz6A^=t2-gNknue5hVoCdr1UA^xg+a5S{2fh#G|Gh7rB@-bU}e zm*G3^`+lGIdEe{${&@cQuIoG3aAwBd`|P#$TEF#MYi|K>d8=iqgEes*?tetLR# za&mHfc6@kxbaZ^Ycf5Cac({LXad2?3d%UxCw6%4(wQ;bqw|}&^x3{~yyS;O?w!gNr zx3amly|J;ezP`S)ak{d)w!FMNzdeuMnwi~1&uq@jtSyYJj0`Rh_Am7>E-sENq8Anx z=I6oJ{M`J)+}zyk+`{ba?9AL28jYTwS(urbnVy~=nnicab+pVhk4&sjO-)TsPEJfr zjE|3xjg5_rj*pCt3=a{M@^zolXbnro81E|0|Nscearp*{e69XsIj`< z-rkm;?Vg^V?(XhC?Q30KU7eks9UUF*?d@%CZLO`XEiEmmW^{9Nb5m1OV`F1OL&Kjx zf9mV&Q7BaPSXKE*dF4<=$x!j{!IGkZ!ovQ7{GPn*o~(?njPIRkRBv$M0ZvNAI>)6>(_($Z2= zQj(IA;P|Q#;L@_#6(3!MMg$OL_~y#hlhoQ zg@%TPgoFeK2L}ZOef|11ARxf|+oV(An7_ZjpP%2CFJC@=`sD5HjX)qgJw45QCJf!i zOgsnO+}vDUU0qyUoSd8-931TJ?d|OBY;0_-t*x!BtSl`pEi5cPe*9=|Zm#bgwv~=xA$eOTX_I z)#(+`=+V;B($v&cS65e4Q&Uw{eX7#^M5&AGO&5oJmx_vtl9H05qN0L=g1o%EoSfY2 z*RN$|Wo2Y!UcGuHEiEl2B_$~-DIp>8^5si$aq$-~UOa#P91e$ziHV7dii(Jc2n!1f z2?_n$&6@-OzT{UgpQ|{JZ%*B?k37Vj>{>YjQ(R^VCRzx!vy$zNjm-Alz>)Xgln zMJ|{|KEt<2Ydd!cd0?6>oBY({d@|zUwNL(kdcmX2RMC3ocIz1SB~4*Q!0b=lacCcG~WPOqRGEZzVbQ4Q~zdIdPIa z+Zmgxj!CIL8kn0yj;v`r#H^bO#aN6X-MmG%BtkdJ;z_4eQH zAu>4n^I5Lb$h-B8rvQ*EfM|OA!z%@+aJvGfo9E^jh=ClWLj<4;Bh$JbUW>d#a-=3P4dq=L6>5$X!t8LfvH zEEI5?hX{54q;bu29+Nb2cyn%887ItiUriYDv1li@2DOa?KMb72%~l6SR#io&8fj*M z0_`G$FYb~|*P|D*Miso6fCo7|psaZ0c8X;a7Y@7&=Z$W$ zdqd_mG>PmK4_(@u2q?ye|it#r9$O7ehD!e zBen&k!OgiO?Z)b5k9bHDBVyBmn1$9hw@dnmib_*lF$?F>VHUueU6SE!yXqlRVnVLlQxv zeiDVBbaZThW#n-gh8Zo`vLJeG15->(gLjjvdDh1{1|c;DvcG}xJiie^lZHpi?Sv)h z*T{DjhLv{5TF3UQ4`_X<;C0e;c4OM_AJtI+L!1qX7d7)^9Mx9E>gz`zbxgMLYEpFo zxzi)dF-l>QopI#R2cZ{P^`lO8hZ`XrEH_cZVy$S}d1l%8Ak6`tDN23{PGQqc! zYYPe5l@FWq60*XxEMj!-K6r)oW{QnrhNkx_X#Ne5h@W+`dBi{E1jzHOJ5D

}#HE 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 UU zHSq#WV;j4B4Udd|14}Exuk2=ip3R+aSOYVT#NS@tFaV8Jx=q^c@e4X8kh&^?)OATC z5R5j9y38&3Hdzcl+Cpt?v5cYNNZaG|hMQ3@mbK;}5T7D? zY_}fMt!Qw5;?IeWS{HQ?bWReG&d=H{Nx225p9PMDI490EF^BrAB1?()T&e{@lkn7Ic7C19o2SP4Q6;}$>UDgjg|Cy} z+~*A5*iMXGn*<8N)A`;@kbp9rUH-$F*>9)oW$yh&aV3T){Jzf6j;$Wky3HI-o#d^#!{l zAe-?r)b_)hK|qVkkC-MFma+X6OV8d<+x~Uo=<1c|+Pfw^G+B67Vieb@-Aka0ay9^> z2)lP!z{GOEuv*#%OCw>?HJZlD@;VC^h(7nmnz>Z80YoBKkAJrAGS)l!XzWk2#(q9{ z^lN#($VYZtb8Cmn)rsHliKF)Lp^!N4vt;%<{ho9AF#W1+tg-4x)crdN(s=Y?Z-Ac@ zPOHfttJFCgC!e}g+)GFHbx2iM+C1~k zNLFX{yW7=G^1#ogtD(pfkTHKPF$wUMUBlx9Lvllb*Fea)o$I;7NnO{u5O|hP7Pb04?}}mAw?c2mElB`kZ2qBUT{tDc6=UV6 z-}Ic6z71f|O9O^eXWfP|{Z+O>>EV6+wq}N4R2ITLBCX(M7SRfXw z2S0osZw3;3^h3OA0OAM*$^1u{uPy?}Ll|I_8jzFbgNISS^1NN4gF~KQ0R(twxNqPY zsm~IjL}BnfT+~pu5mmSUtKE}Q(^r@ON!c2%$#GuJxgS~MW!Lvn+Ov|~f&n^O zx$U18U8`2O?Ee-?B|&5mSwm@;0S&o*`#BN?)LE@kqKPD3oBJ{@Oq z_=a3ofhWCq2~P0u6B3m()WYq9Y$ieaYW7mvYH8kDejMxK48E|8L z?|5Tzl3c~a+Vi;nQkLTTS=P{Fsblz6t5J68s+Dt%a_jV)(N9af|l5 zI?zF)<1|_1%9ifpEO>Y^HPq|PW<^-X2n=Nu)SYK~US+C>=BRJUNWKKT)?VhPi{-tF zl*Q1bV-;1`#r1n{WN3x{T8%dP-Q7;{_`$na+DkPVqI=pb!qzYSefcJ<*G}yQ(Y0%4 z;7O=)!u2VSm7*;VT**o$QG|=9w&geA&dECKP-jY3{Nfm8E{-^69w#)I(7^nP=&ttV zg}*oBvnDQwf(oabaA2sQC)E>qKFOV7@{N5FHaeCvrDcAH32}NUd2`)HGP%x9gqQmX zA~&>PIn1~Z$8xjB_MeWNP6sR9Q&PcQ0k#r3OTM^Ig9r_%+}8O))_?-ZlmfopY9#oHQR23R-HSQ>FGs<(O-Y4-l=$_j+_GJD&D+= zIao_Od|h$jF>c?9r*HbyaWHc@_Wt1?<*k*vDhIBsQRdmVYrzykMG6W@NPlnNlHP<` zSV?t|8AVkfctp^#3v@j@9Vg)XZQNxU& zS|pR_CyRRcuZlS5iy6LDR;bTh8g?~XI-}8#RHmj4FD|L#KX2vcsXxQLlTDj`N)F-Y zT^r&!kF4rit2pM(TSxY1>&3mLdfITree

Abstract

-

The towering tree, vibrant with it's deep roots and lush leaves, branches spreading wide.

-

It vividly illustrates the concept of divide-and-conquer in data.

+

The towering tree exudes a vibrant essence, boasting profound roots and abundant foliage, yet its branches are sparsely scattered, creating an ethereal aura.

+

It shows us the vivid form of divide-and-conquer in data.

Chapter contents