From 96597b8aaab871c2debe22ff819127f17f74a7e9 Mon Sep 17 00:00:00 2001 From: Yudong Jin Date: Wed, 1 May 2024 05:56:27 +0800 Subject: [PATCH] Add the initial translation of chapter "searching" (#1324) --- en/docs/chapter_hello_algo/index.md | 4 +- .../binary_search_example.png | Bin 0 -> 16862 bytes .../binary_search_ranges.png | Bin 0 -> 26366 bytes .../binary_search_step1.png | Bin 0 -> 15623 bytes .../binary_search_step2.png | Bin 0 -> 13595 bytes .../binary_search_step3.png | Bin 0 -> 16961 bytes .../binary_search_step4.png | Bin 0 -> 13035 bytes .../binary_search_step5.png | Bin 0 -> 16829 bytes .../binary_search_step6.png | Bin 0 -> 13027 bytes .../binary_search_step7.png | Bin 0 -> 14751 bytes en/docs/chapter_searching/binary_search.md | 83 ++++++++++++++++ .../binary_search_edge_by_element.png | Bin 0 -> 14311 bytes .../binary_search_right_edge_by_left_edge.png | Bin 0 -> 13399 bytes .../chapter_searching/binary_search_edge.md | 56 +++++++++++ .../binary_search_insertion_example.png | Bin 0 -> 16290 bytes .../binary_search_insertion_naive.png | Bin 0 -> 12330 bytes .../binary_search_insertion_step1.png | Bin 0 -> 15249 bytes .../binary_search_insertion_step2.png | Bin 0 -> 13156 bytes .../binary_search_insertion_step3.png | Bin 0 -> 17056 bytes .../binary_search_insertion_step4.png | Bin 0 -> 12964 bytes .../binary_search_insertion_step5.png | Bin 0 -> 16653 bytes .../binary_search_insertion_step6.png | Bin 0 -> 13192 bytes .../binary_search_insertion_step7.png | Bin 0 -> 16273 bytes .../binary_search_insertion_step8.png | Bin 0 -> 12570 bytes .../binary_search_insertion.md | 91 ++++++++++++++++++ en/docs/chapter_searching/index.md | 9 ++ .../two_sum_brute_force.png | Bin 0 -> 13071 bytes .../two_sum_hashtable_step1.png | Bin 0 -> 14421 bytes .../two_sum_hashtable_step2.png | Bin 0 -> 14673 bytes .../two_sum_hashtable_step3.png | Bin 0 -> 14597 bytes .../replace_linear_by_hashing.md | 47 +++++++++ .../searching_algorithms.png | Bin 0 -> 34523 bytes .../searching_algorithm_revisited.md | 84 ++++++++++++++++ en/docs/chapter_searching/summary.md | 8 ++ 34 files changed, 380 insertions(+), 2 deletions(-) create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_example.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_ranges.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step1.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step2.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step3.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step4.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step5.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step6.png create mode 100644 en/docs/chapter_searching/binary_search.assets/binary_search_step7.png create mode 100644 en/docs/chapter_searching/binary_search.md create mode 100644 en/docs/chapter_searching/binary_search_edge.assets/binary_search_edge_by_element.png create mode 100644 en/docs/chapter_searching/binary_search_edge.assets/binary_search_right_edge_by_left_edge.png create mode 100644 en/docs/chapter_searching/binary_search_edge.md create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_example.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_naive.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step1.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step2.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step3.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step4.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step5.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step6.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step7.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step8.png create mode 100644 en/docs/chapter_searching/binary_search_insertion.md create mode 100644 en/docs/chapter_searching/index.md create mode 100644 en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png create mode 100644 en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_hashtable_step1.png create mode 100644 en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_hashtable_step2.png create mode 100644 en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_hashtable_step3.png create mode 100644 en/docs/chapter_searching/replace_linear_by_hashing.md create mode 100644 en/docs/chapter_searching/searching_algorithm_revisited.assets/searching_algorithms.png create mode 100644 en/docs/chapter_searching/searching_algorithm_revisited.md create mode 100644 en/docs/chapter_searching/summary.md diff --git a/en/docs/chapter_hello_algo/index.md b/en/docs/chapter_hello_algo/index.md index fc65157df..0dc41f39e 100644 --- a/en/docs/chapter_hello_algo/index.md +++ b/en/docs/chapter_hello_algo/index.md @@ -9,13 +9,13 @@ A few years ago, I shared the "Sword for Offer" problem solutions on LeetCode, r Directly solving problems seems to be the most popular method — it's simple, direct, and effective. However, problem-solving is like playing a game of Minesweeper: those with strong self-study abilities can defuse the mines one by one, but those with insufficient basics might end up metaphorically bruised from explosions, retreating step by step in frustration. Going through textbooks is also common, but for those aiming for job applications, the energy spent on thesis writing, resume submissions, and preparation for written tests and interviews leaves little for tackling thick books, turning it into a daunting challenge. -If you're facing similar troubles, then this book are lucky to have found you. This book is my answer to the question. While it may not be the best solution, it is at least a positive attempt. This book may not directly land you an offer, but it will guide you through the "knowledge map" in data structures and algorithms, help you understand the shapes, sizes, and locations of different "mines," and enable you to master various "demining methods." With these skills, I believe you can solve problems and read literature more comfortably, gradually building a knowledge system. +If you're facing similar troubles, then this book is lucky to have found you. This book is my answer to the question. While it may not be the best solution, it is at least a positive attempt. This book may not directly land you an offer, but it will guide you through the "knowledge map" in data structures and algorithms, help you understand the shapes, sizes, and locations of different "mines," and enable you to master various "demining methods." With these skills, I believe you can solve problems and read literature more comfortably, gradually building a knowledge system. I deeply agree with Professor Feynman's statement: "Knowledge isn't free. You have to pay attention." In this sense, this book is not entirely "free." To not disappoint the precious "attention" you pay for this book, I will do my best, dedicating my utmost "attention" to this book. Knowing my limitations, although the content of this book has been refined over time, there are surely many errors remaining. I sincerely request critiques and corrections from all teachers and students. -![Hello Algorithms](../assets/covers/chapter_hello_algo.jpg){ class="cover-image" } +![Hello Algo](../assets/covers/chapter_hello_algo.jpg){ class="cover-image" }

Hello, Algo!

diff --git a/en/docs/chapter_searching/binary_search.assets/binary_search_example.png b/en/docs/chapter_searching/binary_search.assets/binary_search_example.png new file mode 100644 index 0000000000000000000000000000000000000000..9051addbd4de1c44becd24acf81cb1a2cc4401d0 GIT binary patch literal 16862 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

Kg;y+VjS2I}$s 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search.assets/binary_search_ranges.png b/en/docs/chapter_searching/binary_search.assets/binary_search_ranges.png new file mode 100644 index 0000000000000000000000000000000000000000..93bc6a3249de243dd83a8825f8e39b822df056fe GIT binary patch literal 26366 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search.assets/binary_search_step2.png b/en/docs/chapter_searching/binary_search.assets/binary_search_step2.png new file mode 100644 index 0000000000000000000000000000000000000000..60637300612daf9003cd315f8064552a215be2f6 GIT binary patch literal 13595 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search.assets/binary_search_step3.png b/en/docs/chapter_searching/binary_search.assets/binary_search_step3.png new file mode 100644 index 0000000000000000000000000000000000000000..0184c3a23db8216b9a57213ea69d2f41835eb315 GIT binary patch literal 16961 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 E0E#oCO#lD@ literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search.assets/binary_search_step4.png b/en/docs/chapter_searching/binary_search.assets/binary_search_step4.png new file mode 100644 index 0000000000000000000000000000000000000000..54e8e12c38ffa2167cd58c646619010ea699bc20 GIT binary patch literal 13035 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 H!0-P6xL#^n literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search.md b/en/docs/chapter_searching/binary_search.md new file mode 100644 index 000000000..e84e63d6a --- /dev/null +++ b/en/docs/chapter_searching/binary_search.md @@ -0,0 +1,83 @@ +# Binary search + +Binary search is an efficient search algorithm based on the divide-and-conquer strategy. It utilizes the orderliness of data, reducing the search range by half each round until the target element is found or the search interval is empty. + +!!! question + + Given an array `nums` of length $n$, with elements arranged in ascending order and non-repeating. Please find and return the index of element `target` in this array. If the array does not contain the element, return $-1$. An example is shown below. + +![Binary search example data](binary_search.assets/binary_search_example.png) + +As shown in the figure below, we first initialize pointers $i = 0$ and $j = n - 1$, pointing to the first and last elements of the array, representing the search interval $[0, n - 1]$. Please note that square brackets indicate a closed interval, which includes the boundary values themselves. + +Next, perform the following two steps in a loop. + +1. Calculate the midpoint index $m = \lfloor {(i + j) / 2} \rfloor$, where $\lfloor \: \rfloor$ denotes the floor operation. +2. Compare the size of `nums[m]` and `target`, divided into the following three scenarios. + 1. If `nums[m] < target`, it indicates that `target` is in the interval $[m + 1, j]$, thus set $i = m + 1$. + 2. If `nums[m] > target`, it indicates that `target` is in the interval $[i, m - 1]$, thus set $j = m - 1$. + 3. If `nums[m] = target`, it indicates that `target` is found, thus return index $m$. + +If the array does not contain the target element, the search interval will eventually reduce to empty. In this case, return $-1$. + +=== "<1>" + ![Binary search process](binary_search.assets/binary_search_step1.png) + +=== "<2>" + ![binary_search_step2](binary_search.assets/binary_search_step2.png) + +=== "<3>" + ![binary_search_step3](binary_search.assets/binary_search_step3.png) + +=== "<4>" + ![binary_search_step4](binary_search.assets/binary_search_step4.png) + +=== "<5>" + ![binary_search_step5](binary_search.assets/binary_search_step5.png) + +=== "<6>" + ![binary_search_step6](binary_search.assets/binary_search_step6.png) + +=== "<7>" + ![binary_search_step7](binary_search.assets/binary_search_step7.png) + +It's worth noting that since $i$ and $j$ are both of type `int`, **$i + j$ might exceed the range of `int` type**. To avoid large number overflow, we usually use the formula $m = \lfloor {i + (j - i) / 2} \rfloor$ to calculate the midpoint. + +The code is as follows: + +```src +[file]{binary_search}-[class]{}-[func]{binary_search} +``` + +**Time complexity is $O(\log n)$** : In the binary loop, the interval reduces by half each round, hence the number of iterations is $\log_2 n$. + +**Space complexity is $O(1)$** : Pointers $i$ and $j$ use constant size space. + +## Interval representation methods + +Besides the aforementioned closed interval, a common interval representation is the "left-closed right-open" interval, defined as $[0, n)$, where the left boundary includes itself, and the right boundary does not include itself. In this representation, the interval $[i, j)$ is empty when $i = j$. + +We can implement a binary search algorithm with the same functionality based on this representation: + +```src +[file]{binary_search}-[class]{}-[func]{binary_search_lcro} +``` + +As shown in the figure below, in the two types of interval representations, the initialization of the binary search algorithm, the loop condition, and the narrowing interval operation are different. + +Since both boundaries in the "closed interval" representation are defined as closed, the operations to narrow the interval through pointers $i$ and $j$ are also symmetrical. This makes it less prone to errors, **therefore, it is generally recommended to use the "closed interval" approach**. + +![Two types of interval definitions](binary_search.assets/binary_search_ranges.png) + +## Advantages and limitations + +Binary search performs well in both time and space aspects. + +- Binary search is time-efficient. With large data volumes, the logarithmic time complexity has a significant advantage. For instance, when the data size $n = 2^{20}$, linear search requires $2^{20} = 1048576$ iterations, while binary search only requires $\log_2 2^{20} = 20$ iterations. +- Binary search does not require extra space. Compared to search algorithms that rely on additional space (like hash search), binary search is more space-efficient. + +However, binary search is not suitable for all situations, mainly for the following reasons. + +- Binary search is only applicable to ordered data. If the input data is unordered, it is not worth sorting it just to use binary search, as sorting algorithms typically have a time complexity of $O(n \log n)$, which is higher than both linear and binary search. For scenarios with frequent element insertion to maintain array order, inserting elements into specific positions has a time complexity of $O(n)$, which is also quite costly. +- Binary search is only applicable to arrays. Binary search requires non-continuous (jumping) element access, which is inefficient in linked lists, thus not suitable for use in linked lists or data structures based on linked lists. +- With small data volumes, linear search performs better. In linear search, each round only requires 1 decision operation; whereas in binary search, it involves 1 addition, 1 division, 1 to 3 decision operations, 1 addition (subtraction), totaling 4 to 6 operations; therefore, when data volume $n$ is small, linear search can be faster than binary search. diff --git a/en/docs/chapter_searching/binary_search_edge.assets/binary_search_edge_by_element.png b/en/docs/chapter_searching/binary_search_edge.assets/binary_search_edge_by_element.png new file mode 100644 index 0000000000000000000000000000000000000000..b2799062a78c0d406461770f1a2c4a6808934ef2 GIT binary patch literal 14311 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_edge.assets/binary_search_right_edge_by_left_edge.png b/en/docs/chapter_searching/binary_search_edge.assets/binary_search_right_edge_by_left_edge.png new file mode 100644 index 0000000000000000000000000000000000000000..6f10b838e6ed6c921ead5705a59318b6c76f2415 GIT binary patch literal 13399 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 Z@1msEa%kd4eL4gH3Nk9vWs;_T{{`_vS*ZX3 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_edge.md b/en/docs/chapter_searching/binary_search_edge.md new file mode 100644 index 000000000..3af95f050 --- /dev/null +++ b/en/docs/chapter_searching/binary_search_edge.md @@ -0,0 +1,56 @@ +# Binary search boundaries + +## Find the left boundary + +!!! question + + Given a sorted array `nums` of length $n$, which may contain duplicate elements, return the index of the leftmost element `target`. If the element is not present in the array, return $-1$. + +Recall the method of binary search for an insertion point, after the search is completed, $i$ points to the leftmost `target`, **thus searching for the insertion point is essentially searching for the index of the leftmost `target`**. + +Consider implementing the search for the left boundary using the function for finding an insertion point. Note that the array might not contain `target`, which could lead to the following two results: + +- The index $i$ of the insertion point is out of bounds. +- The element `nums[i]` is not equal to `target`. + +In these cases, simply return $-1$. The code is as follows: + +```src +[file]{binary_search_edge}-[class]{}-[func]{binary_search_left_edge} +``` + +## Find the right boundary + +So how do we find the rightmost `target`? The most straightforward way is to modify the code, replacing the pointer contraction operation in the case of `nums[m] == target`. The code is omitted here, but interested readers can implement it on their own. + +Below we introduce two more cunning methods. + +### Reusing the search for the left boundary + +In fact, we can use the function for finding the leftmost element to find the rightmost element, specifically by **transforming the search for the rightmost `target` into a search for the leftmost `target + 1`**. + +As shown in the figure below, after the search is completed, the pointer $i$ points to the leftmost `target + 1` (if it exists), while $j$ points to the rightmost `target`, **thus returning $j$ is sufficient**. + +![Transforming the search for the right boundary into the search for the left boundary](binary_search_edge.assets/binary_search_right_edge_by_left_edge.png) + +Please note, the insertion point returned is $i$, therefore, it should be subtracted by $1$ to obtain $j$: + +```src +[file]{binary_search_edge}-[class]{}-[func]{binary_search_right_edge} +``` + +### Transforming into an element search + +We know that when the array does not contain `target`, $i$ and $j$ will eventually point to the first element greater and smaller than `target` respectively. + +Thus, as shown in the figure below, we can construct an element that does not exist in the array, to search for the left and right boundaries. + +- To find the leftmost `target`: it can be transformed into searching for `target - 0.5`, and return the pointer $i$. +- To find the rightmost `target`: it can be transformed into searching for `target + 0.5`, and return the pointer $j$. + +![Transforming the search for boundaries into the search for an element](binary_search_edge.assets/binary_search_edge_by_element.png) + +The code is omitted here, but two points are worth noting. + +- The given array does not contain decimals, meaning we do not need to worry about how to handle equal situations. +- Since this method introduces decimals, the variable `target` in the function needs to be changed to a floating point type (no change needed in Python). diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_example.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_example.png new file mode 100644 index 0000000000000000000000000000000000000000..3803db33d528c044fec74aba37c966fd70590114 GIT binary patch literal 16290 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 L<#!blhJOD85E8n2 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_naive.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_naive.png new file mode 100644 index 0000000000000000000000000000000000000000..b47ffd79ab5a8db3d010341a3c17719ade99d6f2 GIT binary patch literal 12330 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step1.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step1.png new file mode 100644 index 0000000000000000000000000000000000000000..7717114a25ac9a708a243d829f7f0bccb0085e7c GIT binary patch literal 15249 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 DE?p-q literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step2.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step2.png new file mode 100644 index 0000000000000000000000000000000000000000..13b9fec08afe3cbc076347efb570c8f195d6b352 GIT binary patch literal 13156 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 S{Q(6x0!2ABS?rt8p#K4N)1@x} literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step3.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step3.png new file mode 100644 index 0000000000000000000000000000000000000000..4f26ada2494428bb01581f775b33a4ca32e80ef7 GIT binary patch literal 17056 zcmbWebyywEvo1Pop}~T?OK^7!?iyTzyK8^|frY!f1PK;`1PN}7;KAJ`cyN~x;I4e% zZ}0o;d+vSidCvSXGu>TX^;Xr}HH)DqN?lbB9fcSL0049ad1(y*K!DwXCy?P_m%AcX zOIYJpU0F-!`T2QgXJ>0`>+bHZY`ko9b2BO`D!4UBSXkIOY+XA`OE4)C0)Z?qFCQzR zh?g9)s*ZMbbv-^l9v&Xz1r0wuJgls&l$Di@j*i~{zVGkvpO}~!9v)s?T+GkUUt3$N zuCDIr=$M+S6=EG*3L&&$rv{`vD~Qc_ZEZ0z;*b$NOD{QUg* z`1sk`Sw=>Ns;a7lgai}{y}G)(y}P}+xk*h)2@4A|Ha1pLQnI(V*U-?=*4EC=&Gm9~ zo1UINIXNjQDY?A733TQdU}5R_)%F|X<%SbQBe^Q5z*Gx*4WtS8NE?cQ?s|Xx3RI&-rjC)ZQVC^vAKKa z?(Tkke5_n?6c-ow>({S_h6ZzU^Wx&-`1tt!{e7#l0$*R>vbme??(VFttgZ7ut*xyV z78c&#-g$i=kM+om^NfxzkItL~1_uWlryHuOsscWI_&QeYUsrW-a9~qpUD#cC`z7XA zj{l(z*VOi8b8~Yckhloq(+w(o5n{gehggRJwDxBUfiDNj~uAx zrhcFPp5B%g))3m*eUjX}m($&m4o!0`bvXA`Ozmv-`dTiVkq}rL;QHBRX?=BJf1#+a zyK=PRBGTv(qP2g%AC~#EdwR;)XMrneYJGF#eU;Dj%5u?Akx@~uPJZV2?(OOI>B`Ub z)x*`e_NJ!M#*&)Vfw`HHpCc`!&0qS;qg$fhRd|{gnBDz;I=%RlT(l!$GC8(5*0<8z zxzLgQJv*^I@#^mSOVgo_+cb~X*s&(w;`+_V{H4j)-ROp>mX#~lw$t456?KQ1poW^< z%Kgog&6e&Bzl5dzlixw@+jFb41G59CNe)X#_p)V&bBkN=zHK;$EOjm~tREkJAKiR< zxbGM|t?f8|JlgSU*wFm6usb{2IoWyFS+-Z5er!k;F>o=xyItM9zF!zN-pmgM05MAi zX$dW#rK9d3*s=g11&`$f<*@$$)5Fy3Kpjbf0R`Aka}9(tkI_d!b+jbC)?lVXpn=|h!GE5BYY`f=H&g5HYDM+5*^aIx|TIR&IM%y zynbfh`#mBcA5E6WVNxm|t&A#?m=T8mIG?N* zEZ~~|9&?*kwpH$42(Uk~}aFro`m_izwwB*!{*;bPV$2g5bo zQVsA~SXv!BSUVdXP^cG-{djU0Ukq1i=12Qq19?YbaQO!X^4o!RbP{&K5iigy0{BW_ zg5Xg&+W- z#oJfR>q4;6z&3WS0gyA{gOZhylZ-J$1KwZ=#Olw#mJ%k+ds)EYZ9%& z%_%L9ccS8`n0o%)pd%{`7%2FcaCe;b1o#^+Hz(G-aSTAunavOX>bgOA3l`2NY0ap2 z=B$yes7?i_1Z;|JwhTsLY{@G1>1@6qI?6tI60%bBOi=8#kDshS2Zqsd;V9v|&`is> z*2HlsA()jfP5(^3#z#P=L_UNQ_(p>L_s#)Mpy9BVK^!pCBZK0!8UO9XWQKJb)=GoG z$l{C&$%cM;v@{B8$89|&^DsT_F}d0D*#fhL0BGB&yS%X&smuVE5>ST#;vg^pn{Ejc zGJOL9f@NR|{+iSKe{^hgY5wBRXTT#UjU$Md`fG9h#-w`1$$-(XFe#5w9Jqg{(^Lbd>D~RNPEb16wvXcef}tFb@|b76HEF>K`YE zF`@;q5SZ{mcpq%Xb!#z>P+*=s*Ma_6-?Fc!ISs^y4hM z6f2IuL%|dW>OeC=8KAqlY7GeBUY$xiR3)mGoJ32uR7UgeR5S_}2|)ru-pTJPHy#fj zDzGT#G7HSkO`W$KS5*Ja&iKZ(9xQyoe}^BL=>IL;NNrx&OVWhlpu2Zj?AtG8NTY}| z?E5I48L+ z+jIzQfrGd1o+WZewm-0W{JwW)ce(h$8-t!0X^&4ri8af@CrQ22Mmz+}9-!d&6?f zp5}RZe|Fw{jL5uxNp2;sCDq#2>SmF6xS!xcUUTDSl3&>eWJMr;c>H(d*z4dB*?t-DwY5?({j|0y@6ceW{<|jIG zxz9c4O9twG38D6x$@DB%yqBjA)9SK?!qzi4gJzRU8%!BQ)qB0&FOW zXbmLG@K%ncOUN8Wx{R3K)2;<6sQ&Hr8{a7r%+~nRI_P4q?+aXuSQU&7nR|TYY}ED;9~K z`1uC{DdeW2*Ly$+ot#YfU^8WFky{}I_*NFBEX3h>&`5h#WlT$wUX@9uv@sfp3G+S; zRRHkAiQoJ=b#1)wS2<%xBEK3c0mS1HoxaXS_%KA2yauMUkczl3_(4*D^zpA#zh@^? zbRf=T9+xh4R+bm9-?=qh)1Nor7QI?*T;k%LBuEC zh?BZLp3t z<0RD*nYIps|C6QF;FnNQK6TGdo5EkPauc!DsBydm640?kBdw4=D6soFSVK!XTui?9 z2kGwuXflO6%f|6{0#pUpt!=YEvwgR+(XQ|U_y%d49h0gic*HG*-YUsxoNfP;-qxK< zWc5iW2r!lnZyLk2kyDxdnG8}y8|Q+r5YmlpiTjpD8WEcEObO%Wg;D( zD|kSqgxqc&G#51zX3;q)u>U3F+?6a*;Xkx#Mesvf$Z$Z3T{BORG+SZV}{pZR{sbDj6gYr93Q z+i6y%czt!hJ?2Ct_R{sy7Q{W;#ZF^ouVNn}ejHloa4rJf`~9m*+^Af2oSP*+h+hzsidt$x%$x2G2yeaJV4g$;D+^B>ewTL=sems7?` z@K~Q@j{wks6)D92+tbOP-a{!Xvvw+Kv#$=<8pXQ04Rf4n870FXn=BIrqT`xZP6fILWpd&}q3bZsFJbTEfY1SO9+ z6c?1)1{8z9{m9UE1WI(wnjQ=eIgmUYJQO1l5joQoDU$>yg)c1b1>u4H7K)%mdUQ{H z0tt%~QzqU5M;S%ekFVjg%0RLlFJN69BoNd^2ATUt%nJY9tkaQqWg~1%Mv)p^&4U}n z4>2c<1>#%|kP;6pMJAnl0q%89$JgQPXbK3*B@fQUgz`UCRK!4%GAjd1VwJbO$Ed1?Kqiuq7^tNPjtcQaIAVA&`shI}*2H#u8 zUib($6+(b54FAH{0lj3#TE+K2Jz@w?lx7<%RLFlV<;nsWC4Gz>=$L1cQ=sNndZ}A* zA|fnyQ)?jSgj>TY`(}cF%{Ho0*DYHi!G``M?q34@l34c(rhl95iAR?}$k$PIA-ul` zp-55r;M16Ii+}M^(2_&YlUVmKBy3?r8$93|=DN+dz!VIdcs7Wzl4oWneQ=@WAOC`Q zydmpWE*u(Z)+$1Ov5MECNoIYH@@)MVc=9sHYhDt|4qf*>IVJiTfuHx+Y~e#x99iA*MB5=Z!kDc+sr{*JVdlm3oe1FLR0 zlY*De2;h5x5v`Zwcb%N#oc`P7ro0#@@lWY@f;WKE=$?24#vH(X@t0CQqVR&k7^gqJ zKRje9QhSsp3;4aMu&VZSPHLH|#dyERw^n;{5(82!CVj?Z8|J2;s{{}s8Z1bBk*Z}RW< zMWMm)8%-{M)2=>6C0`}`H_LSB;-%34B1OnpCnKTI)A5QVC$+2`n@kp7#s zb@%FEL`uKE!8h`Q#Hn9An*ZNT2b0yiSKffH4$Td0Hng_SjBxE#5Z+ETc98}UTl6{l z%gc}o<1RNl4L1)5TDygnXm_4<6EAxh0X_3bp-gN#RutZUYla4w< zfgY-wyH)fSOuul(<4bmVyNe2a*w*#Srq5^3MTP|t9n;z1RwLQE!&rCfO9sl6Xr{4Y zdAB_=6X)o2nQLJl&&PkIFdQ6=O&0zRB3ycw6211^JJ_(&WM1a@sNDKflvjrdnin6$ga2KQ8+W zw6?J$GUTQg3*bO*yKBDo`s14L)6LTRJ(+A!V@TAslZ|JVx!DfToc&{gyWHpl26XJz zez3No;X9Lr?DShWPZr?V50dqAISnI_;rU-dz(PTHR}dILArS8G89l=6tpzG)|E{-G zg)(-#KiH5Uo&_}7U5zI1>GV>GiJZ!ZgZ?oj(-KKo=s!uH^pv6RiEH#^?%WK!iKOka zPN&Fj1$~Qt)t}1!52u>TTWysNyz|1l#nOlMFBUU>v@&?~T)?jS8QX!aEO!4e*j4kh z^an=`bW#1xat+O{*BLWhA4yC!#D1KB(y9Jc!+2KGeJ6seYh*;T~9JSL`mt5NlI zT}JRVVC3I5BOnZK_7b*sQu%!E6L}|r$UpWs@=uZO&K6G!H~wKE z`1$I6#wPqf%%aTqd^u4I{2A?B-4s9zksu`3FuhVpzoGV{DAKzKbC2K1qeOo@5r?h5 zG*M#autG7!6!Z9cgn%&aD(-KY3({Z|McmN*PRb1Y+q6zYp#1xInQ#Q$5lTT|_x*lNoMw7@(H(y&H)K>ZWS3@g)j ziHqfIV;|32TtMhU!q8R$dcan5{so}u4FM)fQ?)V(5dfKycKZvwV4z^o+AiZ{_}>4N zZarbE5Ip%%dpkwAbwSBz_4&%q(o;!)foI*0TfJ>WTbyE z+A}hkZX{y?q?#4PdU#faeqqb~^JeF4e5~WD7)#cSG;l_sqAUi3$V|GL4C+ddtdom} zg@SIB_-!sy_OKrpj?MlpAKS`#xiH+PU#wYDpQ5h*@O{cjqWVL$b{VXp$XJs4-=`U+ znJ-#QRDTT30-sS785?55!_6u;lgI*V(AB0mNEu3IxLQWXEjs|~OYVU4xmYAR^a2fg z#$%#DCVL=F<2mF=3~Y;UO&tS2@pe?D@r2UK`*xmkN->`z&{^UYZiirexH59p2SQ0p z@4&I(P%_axQvWb$|I-Qre5Lb`MdeJ)7c%i4Bz&m`O!d4_u_`u9abeYUq(LoiOL(wO zvSvKv&@f#Y6Q3pD5HanTz%3$p7W+d4@=3Obf&$;b6|Z6PXZ~NzYZB#j>a44WexRd_ zlSiNiJF7JnX(Be|J-r&aQ~~}gE0814kn+wqH6dg+wYiTp8IF>@EL<3Nz?PE<0yv6% z^~O%t^ObY9=KLq_+Rfzim-_CeRG-~H#^%S$-=e4b-Z#c}Ey8o?`=FoUWxODdfVHQ5p8JdPpcnBWAi({TY1P}JuUmIm}v_L+9 ztbixz#Kg-p#$TF>kh>7)x%u0Rpql#p1a$V7pt{L9$VZVORdrXaXF~pamS`HhTu4z^ zU0LIpP%^GK1S9U4jXJcR>3z50f~Cry`C_@^-liXuwfGMJ=v0aj!MG5_@E7Fk>w2=NdLdn6Pw+j^sq z3q`+}6{>&bEdMYBXR9;Fp17ovAT5=+a3t1djbi?lb}NP1eK~vFP{w^*h?bPgD*P4M z*&q=^e-b4@S`Qi>0Z-Y7rvE z;1(g~qqOwSlva1JBv`Mu5fx8ASVO76Oyo!J@{rQA zkt_Pk*F^o~(jb4i#ugj!GRy1tfQRKmFSY7oJ?0GL<@ZD;H~8)(zMl`$Cn$11-^jOr zWLIAqjM$gb=pvG0jVSsN#rafAe1Vc7*?Mo0IV3$|QrbnM4~)JZVlcfW3^)Lslg&_3 z1-GHn>enM$5h2Rhk~(r+2<6-_@_R((xAp5NIjKm_WCod}B`sP{3uiQ%FU1fq$mop$ zvQr&V-5#3y{V+9r@s&gw&9hzu5s2W$MCgb%Zl^aQb0Trf9I#He8x*C$ro74vG=u=8n;-@kx2W@rR&9sl{M;QcbRr1gFEE*&S1=Q|cu^-^tb@T~0GL7u-FrCq}} z8=WbG1r3V<5uM^L1OeU(SxmJ5rxs*iNfuV#5nB)I&flfQeEQn6I>rDy z3n^0f9fSoj%HX0u^gYeP9?CDcT2}Ez(KoX;R&6^YqD~49s(u)>9jn_lyT3CRDh!N% zhxyIYj?Fn>RTM1^W$@d#WEvs$&TaTyDA40nBpbhZ*Pe+5#VJwb#3e#C@Cb`gT*x20 zuKu}uFg)<`E0dSurc3&KuYL)Ah~Pc_+>ejyjypp4PPMq58C{sx!%2EkvWv)=yrK%m$Yf1WGLz+VUZRs>^D38qFry24y*t86oG;HSR=3`SOw z1Setw*MHjoh4g=17m(Rcd###|oL?5GIkU^kcE;3KyM$MtAOOFA?nSyWR{Qeu@OaVy zrrp&*S5(F8EO7fKHKDl4O4d`GYm?cD3Mc>z*pC^f2y9*sq;4|#ig4FAMppC3bpKYQ%4_GPH~Nnw6Lz}w-iDNJBfF~1V zxi&=uClCP>_O==X|IbP2=(E$ZK7i!(Kp#CrvIFFyQr5U9IH2|gLm${N?X9o@WRf@p{w$|9{TD9(C6$N`eRxCr(iw4W*ik8JVyoafyT2 zH&}h)2q+4DqZ;#sSR!LWU`MXU|48irY>W-t-=qb8-O^^4GiXaaGk)NR&epb;?M&%V6cS=KWJ<7q304AYu(6`w!x>kBvcn}jS*Wb zh*$9E9{};!mBW6?w9_wgHcz9VTg4eAuKrB=3$cj z9mM^}3_+kaNsSy&2*P&CkCKoZqlNSw?L@v%nQq&Fen(N?v&N)&0w^zc+)j`IF z{e+h@!4{Od!Cz=!GBC<+iht3KY&eMdeGA^}qY(J28zB&p_oJq2#3T2yN&!HPbCIDu zw)#R()`zkafd@+qj?(Xe-=J?^-#OrACzG>K3cSY_YMV^+sXdP3djwkB+8%DsEd&kX zBSWugAxForQ>ugTIwBrZV>zwuUjMA@3VM?tCBC$_7I8TpTi5Hq(e^aPtQ((|)D@U` z75_t&J0O&ODmfTESC|ptTRz#cjO84zkEjnoFr#QSBaDY^jE|do$-fN~H+ut8azP1` z#Ip~Jd^r#;s#FE0z@eHr$0)YWla|uJd;Jm44h9z+-Nm;i09Ee8V18a6`53%w#30|< z4fh1fH$8xqNh4Qiyb2ri_qm;}S8=|gRh->yF zoon{Btfop>6o{Ij+_^W~c&hA)^)cKBgE0OLBb*WOtRNpfJe_L+YF!qmd5{XlTV`SF2JH4b`>m6WnkSVRkH{jpDx zEv~PMhfxNXsj>q1aUh{bBVAr|Tp-HCu!Rs877nEi@Iu6K7M4$itm9{SY^d~&WxQtJ zTo-sg+7fb$D!cIu@H%lr`O)p6yGDMd3Cs7@TVS|mGGfvaehs?VwctkzO%#-rX@4nd zN@;_zFuCx~NtOc#Ix@^ud*VyeViPi$1>@PT7GSq<0!b`m_z?h?m^~M6C_IxuN2~>& zE|=|{FRh&1BOR>wY!%CYm!fXy#0<_S_NKLk4CeivdVhw&Fd7S8`$?cS^^8;#si~yE z9;GcJD6`9;_@0`zN*ltl`eNWgnrrXs2W;)po&Cg?9EG3AB7y#17Ce~he(jo+jCsmvhRh3zr2_d?8$!YXL=wp0Y;Mp3ibi{J@6IzV0 z-)xBgQ$`1$8?dxsTXX)ukA;>L3W6xtyr zcb1NEC`?>Y97&kiL-KF?&3eN^xUrm{z{4uYNs(|bULZM8$G3_c7ad>DaL@kizD@hq zwO(%b^21(JF`gtcRVe1)(;dY(XGihw&%a()4? z0s1QUn&$>-zyW3`=5sbe#mYq0rU)*YJAGZLreQo+MKiH=a&A15C^DA?9!WznF{X$=9j7hCGT@YeJi`cGRNW`G7RARdMl33a zw$7VD-XYZq$M@xJ0uY30b%z(FD-1p&T@v@8Yie6mR1tXtvxivmw zN(zKJ*u~z!MfMq3*a6E#WO1CUOYSC_P5@#HuD+%on+7Sgv7Hf?OIo!Bkwr44ikiB3enR0gGJ1tQL809BsS&yYTA*h!;wF+3yX|y9Qx3mA9^wDVw zZh>qxI;rIa(Y=Zdq#9$aKT@zeKu>tEhQ#WX?fILmAjeS5?^yj@3y0*YfQm~{2B*kC zP1Flf2)*JM@aPL<@LPs83-kYy%({hxgUd%${rLO$uj_J6IFxWZ(H6q@-qpJ+L3raE z`k9*5`+3lsNKyo5bS9hb-ps7ubN(WY>Fa-4BtPX06b{Vfo)fNaX)I8h0wySi=CWbQ!P16iFZE^Idiy;GmU-7G zz?AfjTZ_BLwhe@4K(<|F(nI1T487Aq(KAC_0~;F{g)u*7?)WUo`< z3rKj&%C^yJyt4_2P@;Ww(ZnDmFL$$El_X_5Y=fJ_b3xpqGyZA62|j|TLW^*bT=Ny5 zZ4ZHJvSD>MAjd-A(s^QFDD4S-x1b9tufZdT7nL1|nR&|22l1uE4YmpM@T9)jm@TC8 z)&}{%!G^v@G~(bK8W)5qbPUJ*t{)ATNmd~QvW55vpf)M0U8O%+Hn96Yrn*JPL{th7FY0QE@Lsf2h z>G>%b=@+mjCy@+7c(r0S7M}KjB@;{)it~-@E1aO=r@80*HMRK5Pb`qj1etQDkX4|O zgOB`-vlMV5g~v3xA}O6hr*h-9rgO zLTtEwEz^m%dS&x%!5o4J@(BXJx(F_=8&yF8LohKqYrkyD+b?MvTN+@=!gSnXItC^N zhUUo-lxW}Eg8j+cS40-{I8D8cb^#Q&CdNV|=flrdiZ@Dv#sZ5}6{^n)!2Jh3X}Gyh zY5EDaHuI;r-|@vCHGW*C^yVYFN?!ni8b9tOQ-_(fXQH1u@ZwhKbX~CT&q}r4)3MN7 zrqg%OGz}F7MIrW6h)c2FGoE_~1xh5%FcT zNV+pllzLtTv&Hvz*RK5H$jWyl1t+Y?&0Q28Yf_v;@p)P`o-HFg?*n$anS0mZC;tda zYGOiJC;S#){V$>)r~(LujWDtBLXgH4DLOweMn*<|P;{%;%?UyF+?(X{k_{3u1C z{-OP1OZW4F_$N}%z_3^Z+RZ!NUPXAUM;i4)3sBV4q?URiGmdoc6CQH_hI}ua>-i>C zW+a^H&7T`rp_pA4)w6sA3y3cgTD3q zpF4yzg6RBt*B0LM=DL-2LSatA<&q^0pBpx4R0nCW?#Nnxc57P|bw1W(-q1ZnFEBb~ z-%JkBeaxL)#wR%I?E5(7L9&kr^&n5!YmvJz4g3(s$PPjy5#y0OH)wNk0;t2WD;+rq z2oi01Sh|rR^W`cTkE$PnLA1Y3K!18(xQ3)kfw)8KP0QeH-yh*ZzsW&Gn@UQs2a!#e zR5I(3YRqFwRyrH*1r3cEMt?ig52iqmkhaq+si!4Y@qBu+d9?xt;?F4m!ND>$iOw4k3<)Q(GQ4F z99DgpWBYme?%@6S-eq5bC;V2>?)+}Se5sew{FJs5!dJmcr0DLUBqzYm( z!3~W@z}UYS9NA_KxU@A`sH{pASizrxoqa{#31nkzJikX-!LmC+flnD&(gL>Fcz0xi zn(@Txl8($MaZ!Fb7{j4azM%>ZQBm4ybl=`R1xM1K6k7xkKmt%qKX=y@!x73FvfwKk z6UBPoT`9~X%=6N)VsJoU7_xpe4TUkEN0hRDHAY1WB!VhFe>i01fV>4aTclgHf5<8H zZWQvIIReGfl(5?B`HQ!mr>H_;nH^huY~#b~cOwmaO`n9MCX*pejg7}^P9Won85jgF zaa@pCNR5FYp~cX=I4Vg%_nl73D0%^kMXI_q0WHLhN!i$(DhZjuc!G1rSX=e5KV_>$ zw~JRgxeO+~J)<4J+oilumI#gf-rSxvpktKk&cC$J1rfJ?FM&4!?~828ZxT$IS*6YH ztm9#B0Wjb7OnvaU1guxiR2W@Ah>5nCRF$s!@vr-2BTnK9ijXw�@8bPS6MjXe1Mu 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

;@a6cq$n9PHC3>qwn2!k$lzx8nkyZ-Upn ziWxfVu5ocM2QLEGfHakb^!V+nF(GVaMWXP+i+8_DrgxMU%48WCe@ypUxI36l=21&RJ?m8-t%t;b^P~r}_*OG;i669}We*8hR_(R}q$7(^iZ)utd`@^M4T{AqZn`H&!xr5boTy-3<|-c} zxgungtz25=?L^N5_%zv5&HeNB%tT9CSs9iTbYX!Uj(Ct9(qv46Zlj-7Gp}BR)Goiz zXuyGLXedoQA6uo#;gK+~P_Vf9u_#SYjN|gP*>8-Xp_wI__$OES5AkWII8WD+?rzOY zQo9N6l$NpICneJs%9QCN7^5`Am$RbL!`O!^%ASp2a&<` z#MIn!eZsFebLt0o%ae?j=)a}Dv+A51@XFL57d zV>SMn`r|X%$l|}g|4z!xPhYmSR;yX4LU1$Xb@gg$Jn?PPb$K&%FoE%|a^kKfL%8YC z&`=^6NSH@metkTl#s!S1Ly*3QI&eL(i5^eXlEN||z|QK{*5O;~PdfK}PnKT`Tt@!Z z#6z~diYs>;tgRVf*6v|hvaSMFh&y#)1pXh7KG0_SiIb&5Y0R_YX;d{s;^T8rYE}9I zSWdmVIasbdPc1krRjy9Xu*e3Y9a zG}^@H>X7kVr+k5fA5zkCB^WeE&Hv922};5O!yt-_+g59oic3xu2WlXcSHs<9dI*Rp z+S3DSNZ>!MQI4wmZ$K5F>z8ns`z?UOO^|k^^L~WGLq13$t=cXg8=T47`fyEedr>fO zs|lLrDATo?K|v!j)if?pTl9gtO%|EEZ(O6seRedwd;FgJ|65?D&O0P|zQ9-T@`ztK z0p?RHB3clw!84IK_3vMvkbl6dz-JL)*I#=fSX$!8`hry{7mX{3-#==!Cg#U{ZrHFO-9D}=!Rp{_eI?)ukkGzkmam(OlnhW1KE<()Rt7l`+NWP6gvS& zg$MJP%etLw7Blm1I*rLud3*KN>h;pr5iyWwwZm&6vv;3J0yCr=)a0IW8#3@2h@*U0 z$kE4VFc&MFtub5857&G3YEnGb`*TxS=-;n@XTNcYJ;BOb=-p}MHAPFVXm-#wv1ic-nJREl~96rvi|;Qh~D9OJc}aIN^K5&=tOM z?`hW@;a^fIPNTuSnCLDt)tXx7nh zy|rH%?+CdQm-+q7MVtB65@>iGf{iwI!kmLdQc^19Yim`?5T8}xPtl^1of7@3XTI4g z^O7&tcL=Ef{M4F1(E$sWNam%;GZq_dKo1=6=4J}bVJ^@)ZBRU&P02otKEsYsItNQ! zi@6ok7Wjs}+Wcnqae9D|ii=f<2>t=y_V)?g1kF>CZc*6!h2qx+yYZOU;!EewS)J5b z<(6crf#I(Rf3eC2;Jqs0CxNTtAYKCNy>O6_T9n3d&22Lcp9AOLJ2hjs;*189yV*O{ zqHF7Hkf_AeM4qbmkT@LHnMVouKJ~z{U7vblWnwNrq zZbN2sL%bM!#xb+38;h-1hq@BrI_{7-y zC-Lr=9Z;aU;H-2ca{F^4{?~gBRW>#@)qxEg>+3M(Vn&eB@tD{)kn~$dUAhlpu6)?* zQ$l7pYsl}F6@oP442x8C$ojdp@dAVs1_%y4f!=}9eb>uT&Z$)P9)tTE<+A2H=R z>*~;WRzi?m{cSPOv2Vd)BWiGtF*?3v%yn*3Jp+>;3(?o93@YSSkROMsUbNOUQxI6l zm_t{HI-elOA@}b1or6*Y@C}2?1`Z;40j({X(PDrt>F1VGJmPgn)C&hQecE3rn)c2i z0l(66c`GpyR17ck>64_ooWA`~00y9+kbD2&<$vH_WaVIa?w2zM;F$Hf1wKVNdAssa zld~tO?*!zDW+e=kP^@{22VdRMc*mUqu`ND!6Mq=>tza-Eb@vB(rvCw6x(QTQa|m$+ zweyv?BfL*G4tJTtbEK=>7r#NXV`grrHV&e24t+QxzG5o}VIqj)nUG4Ge||C}H&w%( z32jf^p}dbm(7|x^sovs*!>cI`+SeICvX+P83M!T+WPDMCUyket(F76BMS2+Iyd2GL zgSOI$@YBE7Kw0N|D(2VpM<|O*HpkWgOPE4*tQP@T;v^qdup{sXYlaMC`7|7*awyr^ ze#9`%3jxFZDM&ETgo@7PCXiB-BgYL}|@HV4(r36*_aL~#T=HOPj9x&qbL3G?%=Bp~86?jX)UA|uj=a-X^K%JmDWS&^dF<%V)A1G_7s4zY3A ztJw8R$KM@am68V&(o_m_Kh3BX$4>|w?NfLdhP~<`F$}vNTBIZbVSRz(<-$c;mX|cK z=2I0Kt?{)GU&{ZxQl`4lcR3r2AzN&OO^BBBV~Lp<4@IbtnG&9Sf7_0s|Gr8dkN_Wn z366}n4n$JX*7zb)snfbf^jSdYB=J4!WT9wu?@H9@>e|GgZs+^aeGhu4z_Kn1O@$I_ zJUe?Uhe6k7&1Q{J_NI7wnPz9%fUR$1aHG*Rkh|?(c=YYacnq!HH;=!xqD)f2 z1FAhH(-%}y(8DbQOw=`+1@5y%NBgBSgB)IYob#E4bT+66zFAAAnMNUq9?uh`_KCJs zO29|>XchU58e3PLfDkN$49*?}U}Rk&-l@5B1~$>p2L{qbW|{|^;JsvQ1T(wgd;;zB z@_%ir|B(3d)=$3GZSg_LqGfXaL$y$k0ZE$_5TI~d4Q^02efu44nT%8T6KSfcNjBrv z91>rdgB0LYpZKu_YPxu?ru|-STHg$^zhFT27eVz0p9!MME(bqMW`1IZu5TOYbZSX* z^aQS5WKG{>RXaQbSVootZSPH~&eU2^)4(Xd3n_25KQbID=-T9hUS6{ga@LEFaNoCDGyDDxk#R6~6O4=XX zNb5e5%IBohr~Mi=U=WuvXV*p`c!oAlz*2oi4K3kWI{k)_!Ne9A=$*Q=$Uvz;KXqL z-)})TRTwXy!*`o;Qy9%s+&2oE2BwgbhE%qVti;}XIHD#o*?}<`yXjie_2qxf(mI$x z;Le;8CInDgcL-ZGE0%dX0d#}N71tq@(v9pK$k%p(<+%g?yG2;mrB;5Q@evtYw|p)e z{q@DvW!lM@%TKXmia&XHHE$xfFoY^AjIm7#!3>4?!R!)Fx-d~DaA-$1L?L(yiS1VP z{W2FUb?c>;?Ll03rlJn+I5=r>HR;L>h^&}l(A3`F-SwDIv-@>(j@|y5e+y&^(RRSq zjZhAno%`FAYFjd3Pv0V2O=KZJ`z;Z`IQD>cm;!6(X5!z3HI*>+38_J>>lFEF0OjRM zolE;mtbiAbns9*bC!gRRryGX3J(y@U@lFafpD4?CIuAQnP5_%0?FMK9;W`l(Z@~?u z5e=pQyM`&8d=kYv)Jy;^0AaC}^R=Im0@(W3a@}$+0QRtZh7cyY>zt{5BSZmB?{6-k zncpDdh5CJjPkI4kIUc^y)`si)ai(KmwxbTelsnz@*Lq<)P$XoJS|N#K9*wp3+0gHX z8DXrpJ01}0(3>!8>6E$^-yoWkin< zdXASH;Epjb1^f)M5)gWi{T7KNSd}8%`Xy~Uh}D)qZkUtsOMz`l9!L@hIND-I*QX;} z5aZI6kzymGtfuzu`dHu4P*+Lq8#Fc)=!G)+fM=AjjogBS73;4cMbrTPM&OnrKm#J` ztY1Xs;H0u3haZQ_1C&UE@T$2NBfYE2WdiUa^3Dp#D1&F4KjAWZD(4Hkl#l?-WhHwa zmC3QNnq55;9>h|(n!E+5CN=Rl!#9DliI*BxO;v5*tS_xNo=X=*33`yJHyPon zmp^UxMs&lNGFlK?(4;Yu`0BtVF6@QKu6V*dP=MaCw2@t+~x9bHc=Uz7Rec)^^ zAek%fcs^BY9Y>U29 zg&AotcEK;$CXW5o<)5s&w26O~57qhIU@=tRO7L9Cp(B_=qd z_JUZJnN&N@0IF;RGx+L>bfuHWuby;ifI6FYqy`1~AVI|S5O9i;0;GeBgHrn|&g%LqXu9Kt%=1WiM+)$VHh)dPS~1Cf}@~%>U|G@bcc+K$B=DYH_DjoAA zP36V4nl^q0GX6F~CuJHlEE7do%o3|o`8|Yn8{7H?DPH%q85Mu z;E+AXi9GqRCAKLGd=hbA;oMokWy(RvK;~4e@PD@#|MzXnPn(@A!5mmf z&{6$ftitd-(wYaO!rytkbo1E9g8w}Y0JJ!7PQ3d8@IBvcGbJo0!sB~Bxo5Ni@X?!J zD0u*$x0k@%y%{+RGDV`G;~4*kkAJfLAU)i13|D32uP}Ln#b>Qq+2T{6ugjVW<4R%! zs9Q`u3*(c0MRQ5}Pqna~4$tp*1sFQ_5aPjw=>|v;c{|+?)X*^&KvEO{!2mD-f&l+} zP7xw~>!==-R=W3n2a#(;!(vpZda5f?Bvjiz{p*g8U2PYU?8DgmI}N8s+1n<%csH`O zCs{~B{CB1d05bAr?KZuqMH|xTf3i<1ztP`{nQS%XxtsxctGDu^VM ze3xAM5E}hnr`ncNqkrRhtkh@np=0r8FU7M$trFD6m6IyHdZX7{G0Zv$DF}`FPV58Z zitV30%$u=S)Q&|=GV2Z1G6)SmxhB=jK6mUTCV}$y#)Lm{OPcNZ1h5eEqciOLPyJr( zjTuLc!Fbe!+^COOlO?QY$QAI|?2OP>h_x8RLHb_#%$23ya&v(kjJDj}w~FIG)u@|1 z@UeJlU01DmV*W6o=W^fNr~zAlRM^6bkkp06#fiQi0g`SSYxkM1KtOhPJ-pg4*F*S= zeLWR?|4gy$lO2C!f)D`|n4ytTPVt$3%0UIso?i$F^~S6Nv0gI-TdQkpmDwC3a;Yq% z@=|fMX8-&^N}BTh{T7DZIEu6PEli~EEh4w7eY)A7GB1lMZ0)Ia1B(N(mGrE-mgWm4 z0xVS$JbJ@-G$y?amJH_8cupeOB-GHSZv#H;zLd796gQ+(I=_APreK~h331|-HaQVF zqSkC<4wZcV1YS8^tpM_*&!u}<)Rx?c)Dzb5y3Gj$!0-_Czl3$ce1!ncyY)$VW#pp+ z>*=kpLWqopwAqzZngE+FB-(8|fV_`m(v=k_(^<~jYXl)=uRurj#9^qwhej3VpBcND zU(VEVG|$-G?^62mx|wnGqfa}0BRd*4%FEEVHAz7bm@=WD@~*Dq&ur&~eXH9`+qurb zsQ%aAmgbxfyDxU4w{+T>8JmH{iRZWh@9r{p8_>bPHH~Y2;q=;x^$=Th0ull!L6wMxRru7XN zu-HAl`mIqediRkJxFSdUEASmy9WemI^^g!m55$PI(=JK=#d2xzRIn_t=FFb$aRr6W zo`vnFmNMoR(!Oj>!)#}V3E7>Sl!pM|yHgb)9&BdL$J%OG>-{3o4LdX64jlx!N{xT- z#mFNuHa;o^IT|Fj`D)L}*0aU(jTD|xy~rIX`$~1IqvwFprL$x983t=@N!(_~5AM~i z?S300<)o5Oer%d8G#dC)nPk=mUp&rCVOBaC4R#sCg5QmsbhNi0P2X7bY4{%|)#MLD z{5p)z+&-RpBF@iRDM~F(3^CT|{XcKUzW#(HHU3~YyQ(#XQA1( zZ`JsmV35A`jCOQ22N3{GPSOzBJ@Vh>$ESidNs$b*4$bEP=WJk-)B@Y{#1tjggzftL z$Ea>>`BXCJndh5_<);J!pSnmJRDu&HWGW8&pV_A%PB+rBm(%gfOE{U-96;}joPoA6 zD^+LHp@YA0?7ETVUtHhQJM+?RxD^Ka5-YNwI5`qcP>m!~fzggK)Ei}9)|mCn7i^vi zc92714}rXleXpj`kz3~(M!7wBP=JTfuf%MDdo_O0^>?MJ#{bjC^*^^CNqcEO?OO?k=UJxJz-0I~0mbf#S3fD6YkdQ=quCxJz2xy|@*3FBE;D z|M#u?-n#c&@2&5wWU^<@%$DEYGdr1_30GH@$HpMT00016;iZfQ0H7d9@F)Zc@p1K) z^9`bMr>?9e`|$9vv9YnfzJ7Ie_51hl@bK`$k;1^H0AXQar{HCY{5|bdEy1`j7z{Q) zKYyTv@g!iNy}g}Nb?El?W`BQwVqyXghmVeq4h#$=B_;j*`Ez)9_)~0bYisM&)KqC{ z>FMd|{r!DzPR_-}MPp;*>hIN|p`pda#i*z#DJiKh-C4JHcUxOq#l^*ig@wt<$;->j zot>TEzkipLlRLjS&&$iJuC7i?OG`{hh>MH+bNR>I+&nZi^!oaGZ*Om9bwyiSTSG%b zQBl#u#YI(BwWz4*?Ch+suTNA|bar;Or>Cd3wzj#sxx2eNJv}`#GSbx4w5qD=^73+g zeEi$DZ{p(OPEJmq9v;)v)9#Tgb8~ZgX}ZBdK@ANJR#sLoi}zYuTC%dTGBPsOw*DR; zAJ5Fp1O^74oSYaL8QI#}Mn^~c`1s5m-0bY^#Kgo@&tG;8pZ53nXJ=;{7#P^w+aDbr zZEkKJI|`JSmw);4#qYxhlPu%I!^5POq}|=!-rimp7nhxk4{r*->{&lOyS&>!+aI2r z8DAf(o2d0H^LY2}-Nw>lA?oZJ~|h@on2lSUKmRM(OT3~ zv?|89%^KJpTUfL!&9g7CI}I~lTwZ1f8}h3v4@&;Mw7*o?+nLzf=u=r{ znfqpTd$wYrH@L1cw>KxeF3hj;LrMLviPvm&Q`F`4ecad0!;_oYB~8a!qeecpHVjXlcaNNmZe13R9n_Aj zd~Tn&Dw)mg`jOqyUe#ZD6leds=1~31FE#rqo=;=XwMSaIkCqPhHjg*pt*u`>z8-u} zS~~n&Ha3*d(H2F4TITVVz~W7k(z|J}^p@$T)`^2W^g=2)*^eU(`9BwyTE zyndKG0EiAK$Vh5=&F%jPKuit*mVH-DTnv6B|IaQnk6kF*YZ?f!5^+fI5?(_jISPXl zyyVelurZNXUd|I7yDr%qq(}Wf;BMwFJufp>)5Qvuc=}pVMy}epmB6)*@sA&UR?rLYJ0>JKDR@hkIEg5i8PXW&y zL<6b&4}cbijc{St>862E7A1=#g&_5JYbM_>X+tNfDe=-9r+g@hm!F!VNDQ_1re=l- zy!YUXYC`l;bG70tSZcY8Po18>Mk6e0b}@U9++o6Qc#i(xal9fxu3wRJHb`gGrDY+zraV zvW=~(T7Dvteg9|4av1F8mo_U-nrV56NpqX8@bPAIZELW6Fm!74I`!kn9rw@PlUHA@ z?1QZ=#u$Km3thp5okhQZ>5|d}?{yT&9ZRs0ZnOi^mmiXtkIK?PHeoxwP~CQ-30655;l z1Am)tR5pKha%BAN+#53?11X~5w)L#7dSTO*)t?(#nDAgzu%1)NI|TsLP(cO13a%Ma zf&yY?XccTz-WX``@LC`yUtbvj2~?87Rcv*v$gu!!9k9S>)uyrz@QRe6LVQGxa(r=W zYn)F{lA$St1~w|&k2UC!t(*XWA&XL}X{i@Ug0wI|0sz4PFaSbcAw|52{`c?W3~hIzkXKwBdJk(qe)9O_O&0W3?(XH4%;HP+{n-Kubj)452Y=*3}TlH8T`? zwukeKbPgK~xz#^|JdC#4UF2$A3wq4Gs$t!6bo=ttxJ~|&o$yFK?AH)Ba37QDQ+3)Z z@16VIia&nxCc1-ySpvXSp@J*zRO{#MNju_6066O)qnB!faz4gW3`{WKXENHcGMhmj z?#VmbmjEb;8`n(QZuTX0Iol9A4eWRWB=Tu4)*a7KL5S`@ozvZ#3PWZa?Ti8eXBu2H zI?<`-83(lwUII~ zDgF*cWJZ6CYcpS|gv!2K)n?)UQ0;WzXJ@3gDyy!!eZd-FjBxu)w-=~PHx zCzPUu0O)xA;J3q#-5P)Y{>tGq?Pw;(dX@3XZ|KuPic5%y9LzCVD1BBe7Zoo!QlN8Sz41i5&V8~E}P7JU| zZ4vj}kF%p-(xGpZ5mEZ6GdHp?tRq%b0t|_g``dyg{s%y(;URNDmjXZt)4&jfP52UU zL*!2Yc*z_WQ6il2zJuzKRo8z?MhJqIMGRZv1S7)a{~q_I*@9Cr%U|&=xb$ z(=JNPoSEFzG^`_Z2;$N+6?@&U-sk&NG6h61^{)M2CiR^qkJ?!8l)$%+jeV2 zX4NmqsY3ZpqnV$>iO=Z=MZ^p-JmT$6;O8lG&S^X4`Ke!XhWeqvCQ*sgT&>4af7y&- zwf^PMLW5qtLd}&VGE~9{7%4=e{OHM@LF{WCEoeaNTA)Ay7Law9buMbs*taAmURv8_ zXVAE%5eoE;R|J@bnef7~* zl4K}G*0TcEo0Z8vzTalyySw`hJ4%Y3KU^~z_dFcZuXH~mR+br2c+9yPCzAPIqOHwa zp6*Ex!F|y1n06`>84Iy*sauCKHV0Qc{GWLXR4c*f+{A2M z+I{C#C6KPY&4$xd2^~t*KY$m&rb=i+hfA2$TU{EZyx0f&#qVvD6D~N9rKXUCtE=4O zO5AOGig&Ag;#y0p84PY|5X+7j?2--R%g--ex2XiBKiz-<)5A^*Ae9oC(zY_Kh8ky;|sw>YQ;ePaYxp?F(B?H;oLV@cfJH z^kOpsIW5Zjbt_uRD^a=t_Y%I&U$2d6bBvo5a=UO5Gctml~BP%kgEfNy62u6Pv1tWYA{?|DL>)z;Zx%dj&*^Q^>Vi?5pD$D+{~;P;2^u~FzB{&4?|8Y;(7yjWCyMQSXwd?>sY1)Nfpj2@iQVo^gU67 z0^a}+&i6NWcM?)Q&D9B*AJ`Z6Q{_~p$dopcJBJ=5DMA34Juf;9@Hm}28i-T=P5QD` z6EiR*MZ35cNE|pdrG>%J9Ri^eaE`}b)sJh-ARS_=^F#{%XXaOgJQ68Wd}s~Js#ms0 zksT)NhlRC06o{U=<<=hs&VxKE+hUMdQ`ae0<`>|?lh*0oW|^DIFKdE^%79ycvK;* zEh$M7+1Wh_v2xMO-8%yG8kk^6_7TMj4Y;928L?791(W(|z>(=DtMMI#F?zB^l z^^cpa>cl>nKmwk(uiYw-5NI~yaA#yN@%#}hU#_CvHNtm~SlP^JPBCi^f)Jv!m0P!W z21))k@3igG{UeGCd{Q6LNlDZ&rhgp3=vm2Ryrup9QSp?g#b*T4Pj$37c^-uuQhE90 zRSf@AvRKuFASG+S6|q3yb}Ug=7vP0}DEvc&8N73pSZW9j7?cEa+_uN1goqR|gPk^5 zjKO!v2Xry6Lf-m|GUzy{PZzVZ1NR*LBFl1oznqz4Z85UY`kdUi|Csprk>1&#s|}ax zlX#c-Tk#VkGcZJitmjwv?X@N6K0C9mslMlors{ZB6_MX<1wMwF24PtcCuLqw9;?IN zehdm6TZAxNSOR#=Cy%KKKx8Js>31U>K|Y%Nujm!_d(1SAU37@l;`->BmCCD|@kihG ze#JF)xDiB*lE4xD@U{o^1_#me@99mnWBYv_p~NNv?1~$)xj&`irn)$0v{RoR9q2IM zpypNaREaJqp9XHU~5_|tv7I7R5rjuA(WN@}gz%6iP^Zw#NEZgHYi*k4ml4@Uj` zX85JQ%3|*xLv0-4rfNR>*QSCBH~mc=S+4Pa5^J5k8^?DTN1O=I${%{>Z)YhnkGG%I zx=iE)ZD&4Pau>}Law_#3n)G3tnKbPrm$vkbA+fqTKl8+4)%ZS#HJ{;3Gl^{AcDy0F%oF%^^j>{5>AiMuRneXgR8RSks_iBvMzD0{qr$8 zTxssuUgI2#H+v`}16UnApTzg@kKG4z{c*$Z*(;F6DzlY9z|}Y-!VoxfLn)XKBw=5m@MN$W z0D#dj7cCT4bijbX;#UtgEd)V`ex}~>YmC0+xabi%_jx70Zo$2gs5;H?fzt{Zk}aD2 zn<{_1neNH5qfeh*v#fywah_RS7BXt;ERdUc)3P=beMd07`o+h>CK*>sG-REzlvSKCJsW3`Kx+mfs9ZMMb6wfUZya# zfCS%C=cMRjDb{?VzRNkSNfLr`74I(06kmPpYz;eF$5ipD=P32}{u0Kk9AeLJ7f@R==FoPaej_EW0iL|rtIYiG=Rf|%gXD)-KhNfCROPX#Z^#zpV z&5pv)b~5Y!c!!uB!PZ2XyO^wN&O`&iw5r`LiZ^q17#GmBCvfxzG6_yK>*WrmSKfyv zqExsjc4Kbf=qGjM>Z$PeX@&{7n@E$v6Cw(MfD2mRB&Q7Ct7NgvqB!F#k12ZY@mE#0 zKfY_lwb-1Uzub*P)XNhye5F3h~-Ot;y zNYs!Tcs&8k{aTnO!{v%${Ln_?`4a)i2(LGCF<%vOI7a(s77dK|X@KAqNwEJbC-@Xe z6?X%=tk>a8b@pWS7V0q+l0{;n^VX340$Dv3m1p;JrSR(kunl%2$Si4{^1bj;;pj1# zrCz}gHi_Mc72tUK9Kq1i!!<=s&f_LRB$%Bi5Bp07Q|a-0hPVIWcw;r54#E=tn0wQF z%MRo86b@k32S$2hB|^H6D5PbmB>tu^53)Z+4&V1?Rdq<;mVt#dt%68hdZNq~GDaf=g2-=sKBnnF_{X()zD&!!xa<&!uV zLNoC>W@jO4C;Ue{SLh2MP{ox}kuwl3`@^eh=Uu7Ipcg?_jdukn#)`EoL8&sFiJMv+ zrW4)4Cn0958$Sdm1Q~^aXM8M~$pRLc8nN3088EFS0?VY6V$h`{{ib5ZIdt3<66(@N+OvognvtC0(E#VJY3QRemi`ieHn`e~WQ{ZmmGk)%iA zLzx`8xl;T_f=Hv?kJ=w}GKz1Y_}b&c!PkU~?Z~379L1$@J3I%gp`)sFpsaf`%NLG^ z!lM?#j)i2*f3gi)V7^KDSldO=hlOPtBllGx;VWv8!8+|N#;4a_4yzONFRZZfk9sW{ zOx$J&j3$b-iW8;Wt#T&8HYsQ)3DF&OmqhPleA&AlBnjd5>!|e&ps3tDG;PXe4-MZn?H)e4_$Zhe=+_N9ttKXKFyUG)r%=J4|4dy31Q zcn$s#y>yl(k|>mZ`jnJs-g_T7j1wl>jDN$2)*f+!UPa0+-HTryNazhwOEUaa#A`2^ ztHy8jb=s5$pRD?lN|7^YUejXGz9zb|^iZeLEe5TziCjz{h-2Clq>;m+5`-~6P5r1W z1|Bi&0OxhrtS-;Hd;RJ)zS6Pc2C^+#*c|0V3PouMj@|lD8BRlLawgS04z2Q|c`)F| zV>=wN$OK7t>hj@ux7=Ul!aaD4)QfW=24SPW(tpX*~Hz!xLc{fmu$T4$Xbi}z5k-C_3m{4`*kh5i>f^OCu%W;+QL~L02h(l!ONDq zTq5kqS*9t^HUZ4;FP4}Ff4VwZ_smQf7M+@2%eQ=vtJ>xF56Gs)Dr?HA|LA*z>r3PC zD0Chr_)F_CqDNw8+IzNe11t|77wiU#(OboZ*zohs-7td;pxUAl&0W|t@@)mM` zkOBOz<%RQqRQx&@6ASHLA;Uj-vUm2Rg4O{yGISamHZRzndL8pOV!1XQD}G34oWV){Xj7Lj$UVy;=XW zYF<*r$>Lp3p`0h6$yV;-$=Q68%;g%BMGRoFcEq|^Yu6xZsiv-O34*9cYHi1o+(FP* zo@IB7x0~0U-5J6B_ZQj~DI_W2C#Lq#tHgdxiM_HjrCIzH z;P^t8>mWbYjP?iG%aoEtrcks|(GVeTldRw*m+xu_knuO>?jzY|a{ zj!p%@vUvZmP4}`Puz+paW;Ui7l||U%A=%&qKoT$nzVf~4^2Xx%Ue$`IPNN;GVI8;j z`=P=i`x$Pa7Udl#t2@)cXXL2IUa2>i^gu*)eOZ+)kZ5^%*Q}l7_!p0wWvI%a*&dwD zW2jvxRC|xqf5uMjpK*;v#xiz0w@LgzyXn7LVe)@g^cZshETrw^i|>-7&vQBp>|XXu z=H_%~XAjW^3fI+bFo^oGcMVx75eOX#m5A%)> zMYNT^klp;i`{$sUx{eZ|q5BiZvvJj<(%rJ;jP{4r7azZcmeuOIzl$?cE8W!REhQ`1 z%id*E^3+cFVcm+l5}JAAtHKtwCUCFcb6E}*DztXGH^R&iXA&}AX)+ko=^u>5!_py? ztoRXV{;|kEU%YnfWM=&Juc4OfHm9r}%#*{R%gE4bBekZ{htHOZb@`ffLqZc-wmD1{ ztQ+Ez&DoWTZ|TssTEjb)0r8G*VH!@0DE)%hc&NhOP9NGLPz(s+6X%qLX)~Z}vG=qU zrImE=+^oTRACsy1;Ao^4gQr*bF8LyFH22>f*-xIP2hecdX~_}G3kpstZAyc?kv z0WZlgK@IEM8^kp`S}}WqiiXCyLl)y67rYgbc>1(E#n%%#L$rS@$9L5&dq3vLb?GNk zG|J5=Yp)?8d`qH`?(LJ_#C5G@!4FQYXC(%&f9KSoF-x8@4o!x%w1OIgqIfs6P$>IZ zy#~r=lmX8G_B(bMc1B@D6wD+0WodVLLQcy(P!~Hayl|Qn{d&HF*NT;Fiycl|O*R3d zunM^JR;fAltXXHQhD)o6^Z~UJCWFhR+5+t0R2O>B-3u=D@7Afm;@yJJUUrkbI|>wg z74g> zA&1Ldcp)>ehbwy*RUWifKS99#VQFw^tm&Rl{PEB3<&C_W|fc5}SCaRp8&y@-FRkc1Sc zBKAKVfDsRvk6I*3`&Q@JqzEyRMjRVY;=BHt>^i36em#AJKxM;9vQCRpobW;9V=@6X z@JJ2li$~22`ATqxw2dl?^PKuHL5rl?5|@cJ3nEszsNn)y(%Zl6YX4{f9cxq4IP9;0 zkAow5_c@T7^#%Be8;~AH$CH@scZN!(cCebf-0s*Eg^RnqjG5cqfYqSm=6H`^X9y2ur;KlQ_{-|UT1%#SM;Ec+#WIxlDBuJqQ!wT$9b((d2NkIV~vFZPL`#vo0b1Sb^b zPI@&pinp7@0#V$W&2luL~;{Vm@|b2%2T45D&|V)2^ut64@!hzSplubX2&FwQS+Vq zdLZatAVeYZrK{!0&f{$8rcG@VLK_5?`d8fIT9p~Zw9qD8(si_Z7(y96Y7Stj3e9A^ zDcxPs%SZkvcu7i&@~YCeSbn?EAm~F{mvHMS=Z4QZV8Pep%}motGfWd8iJ+w|bmNT0gyL26K3 zMHP2TmdkIIu%w#IYn9i@&g7If6VTHQw zsXNZ&Qyj_-1&*#i?H=s^_OG_6Zy%?vfBBg3YBIN>z&-fVS!m+`QWp;VSDo4pBF`%oS?(3oVS}lF@-Q^oUb}||1%h46>8m)=LfDS#A9TJ zZ-#`ID3;g-+L0AIOd*kI^5MVnkiPbtAkQuht|fU!%k=tyro$wWq}+{qg2`fUiCPaa7;-YWIG@6ULUiyF1hCSn7xKzf&h`clQC* zKqIywH6R&Sx<6QRQVy|IDmE=5faQ*4m`2iS%i{Hl<170gf z?V07LaxPU7{N_RMd(8)9zp$01_J77l4hQptNzlo)N&zyb?3tY>f}oV`-@TGpGzMiy zmGV!1B~cHbOF~vj_>mf>4?Hei#dcL~>GpfeFsniPf_8c~^f3F^DUPJ@vpLe^v^riv z>kZ|ga2$U6qn(aW+_yR;@X7KT;VzKFmh)b<^(2bD?-Q;-=uckMW7L_hzngDi;W*Mt zwP3FW|EV>>Q28Coh@qIxGRb1IKoyqbx?Et_i5QKik18d-#Ff9lD1RI=M=Z4HVVoV< z2U8d;&lirpu3cs!*~Ut}v;0Wg*!k`Wb5+YuKr=~b<6;y?KH>fUG%3U-cXLmoAUX#9MS zVWa@W?hmKp5Qr+zVP!8Tdjv+*Vbzku!=|K72&Paf2*dcAC=lWO_X22o-&U#hVKy=7 zLmO!$yEBaiLwa@k!V@pgmQkm4P>nb;>F^az8wjPj{%zJgb4gaHFioqL+L$g z!&(n(@1ho4KFYBM+mkXDSZpMCrYj7S>9ee0j?n|1Finv2=bu1b!Y}`>4-6I;!5{}L z+g=;1gMxT{@_uAzy{NU(ZU&xMP7`HaJ>3JqT$~=XW~k@Q&5p4W<_6T$zx^^bZO^YE zh>fY_Lo&PB50QebB0Dig=jFQ5lqRgxrPyotR^aCAt{@pJD|0u24G}IDGsEbR;2AWA z6R~xaP{KDb_Ef-EWCbl2s$Zk5cYq~n6Y8}B?6VMkO!nrK7dTQ7=9C{9L~m5I%G>{D zG03B;ad7npKQS27hHRP(L_+{Rz2Yl4UpV zp@OZyu`IH_Sj#K*t=IRTs(Z+9eXJ>`=?U>HONtY;W-8aJwR=-eWxd%PrpH^^e*KJ? zU^5@g?NX%3#$ECr|T$qRatR*o~`ISs!8AbQo26LqF_|98wYYrN`WPg1QdAu=kFt#TL&6s!^ znCwuI5UL$vaO5lJKDR@e_)|gkk1?{^EP;g;s7&HIo^d#B+Bu0qGNDQCoVrLMUuQdtFNqi3wJ5(xO ztsvRhAHEY53F`vzErCvwb~N+irGR!aL%*@I$IwQlW3fu z_MY$mbhj9voEh8pzbU#HGbV9(OMc|GV0&w>nhQ=b)Yt#}wW?%y;?h%FJBdH#o(LW| zU_dR&;mNc8v}6j3g?eMAXEHsdu~uxmb0OV=PPX7&|JTka6QF9bJ@dAs{4I#(ejyh7 zy$vUqdxm{$FZ$tSvSS5Zu4G_srVrzNiP7Fi9)~d>zTb(n2Y;NJ1-8&yx=(N_j5eoT zOoqw)DW5vlf|?BuXcuu|MSzKmP$qXqNc!msdVx3^kEdqkuZ=al(uuJVq>t<(_C+B% zav?u5r5;)ZtG})%FQ3{xftRXy_@+L5jT&Vr9N|X0 zou)NM(zCqTb!+Ruv_RJU4Gf#)yUWs+b+sY02Ie&Kx5T;&%XCPub>L2a7hZHNfNaMt zfR0lKq>mXPuTWu0jeF--45fq09GgjJO;7bwRcWGX%I^F}5NaSJxnDaV2YkYAT zKTx2t2kjYWb2RbjE1yYUBA!Yc+0FkzhcD51y*boj>iNrqzrHVP7S-@0{ZBL=m<%a! zavHNYg+h{z!d_n%94v`iv27uL#mNJE1NM^H8<&->Afkj@#qx%uo8{R~)y7ot^LgSu z2asN#C$!#pI?_GvD7+sgpsI+#(TNhrkRnV@A;}Gtnv#{ptCY;8^ zMg<3a4OV2crp0)IR!_J?*8r*WO~yI=<9$eb5+CXKGBSB#>p6qBSNw%a{8n2ZR3h{o z$=e5Pc%j$d3K_Ei0@j7!;qN2FEGZ;j1;71q ziDw3chX8Z=UwZdh?maA?hJQ0r@+P7E3BICoZblyU05zEYxhib~hn-IdYlscdPgXUe zsrZ1xrnEhj!4jZ^nsF)2pH8vi?h)iN8b%Bu3ImdAG=zV4qRS8!DUEqtlc8 zez}4Ud(1&;*MPAH8Q-h$Y?|DAu-9(DAk%mn_Oc`EhSND03H*ic`&E$Eo~Wkg?w@<< z>}B9*zh(aW80c`=3DQ;GVPWBg>)b2J^VT3M{*o?5B$(mkKuJj!wxwUE?gbP*Fzgz0 zCB;Dqby=2mLlePI!gH4zRAW-hKMkCdN-+9gs-nJTD|g`B=_KV+$3m^Z&j{j^XJYy+ zv9~c0hAb&FPXu2(&K&Az4;>XIfG^v1Bf-hF;WzfC+Sj+h=8L8C*E(o;rB*~&Qxu63 zKzl8iL<}AOP(aH2%Wc7jKQP(Fnq1A2lI>cwQN!=3OrhjfZeDGGY`YPw{5pdS^i^y{ zqb3@M1JdQt{(?Z$>86hEmeG|KFv5r*?hA2uHaGtrh;DXdm!H(chttJg&OyWh_n@db zA&U;#nz9>~vR|sNK)5eaMsvLQdt&aX1rHX@81#<0*Z*EK&-DJnf77soQRWLx?kZ&E zWMGa#Dsws=x8mcVRrODgSFz} zs&tW>>Qfx@gC;Bt6vZwngJoufPG=6RDMIm(NOS|kNZ<|lGMzwo5)BC{ytuwFFEBQyf;)9 z+Ur&CgN8mVw?A~K$qcOS$>(gWcYQMc3kLaaptE?eeQAxsNnX#F*i>~_wCETs?WsUV zb%x9AW3N#EIm|DNW(PW)#eLfUL3kt;2+OszR^i2OhTik z6vJ(m)Ds2zV-)Yu%Bv0v((l6^n)a%Oa(C^!iymMNS23c5gz29FP#FGY?G^At<&S zN~{5Ujky~G2fM-#(gH8607nMpQlZ+{fMR>`hqoqSz(_*_7|G1=?!0yfo|6gE*ibbJVH~8v_#_a=)Z8kQ^|6kl4;y4(JTQe_pEjBlzsZj zL$Q7edjelFN2y?6!7eAdzP0J`^dhnReSB<}Up4Y3UnAU^XnY^PLfVmn`|=&Os*?BV zdf&2Ime}3e_vI|H59ZRs_J7@LrhBdu$5~;93)%}&0-^nbJ-gjBL9XvdA!gycD1pq- z-YP-}E??@vkW9Rj%2zyzXvZLg60)f`5Gj^!QLPW1be{~$Ufq-fe*kuvG3c#Lx|V4z z>UIte&4|Ke)F;g!eO9q!yBbrm0_ES)P*MHJplwMV)Rgyowl$vC2dF|QqX{cH_Q~}X zgPk=q%}i@Q@q@5-Y>vxLttC8<2I$;md}zsuwbPKcUuRBWnBgLz zeKJe~v;U5h-;@ z6J%xq*E5v>Rd{q3qzhVv0{!U_B+I<=tpSt*3UZ9&V4a8(a2A18zGk&TsbJOv?PGXJ zmnMll3?K=Vl$}A~VjVnJbnDQJ{E`nEQSWRnes@JK3!|x98aFrs?eWvF<=#G0R31v> z3?_NJsCQla&9vRM1%OZj0@Rfh-;@G5KsQ%82=tH>r^N>wcdSwl8N-LOlDVcMv&TNREGoLl4wF?cj|MR^%<^^|Qy4utKo{@P^|; z5%>-K3(a(OCbieq%H#IP&Nx5$G{h|dwRY4i>^5o=ufU@@WM>cE(UebU%eF`YilSlK z(dYTavcaykUcOQ6(Lh=jq_lZ1**Yi&xf6`%^=z9q40{)n4@8O^xjL!`IT0h9XTW-otGtvP@IAE`I zFm;)T$NG6Sml;#uIB*T;4ZCY)a={9hk$I84>g-{pPhA8AYY3l$i!RZh=(o7Vqzh2N zD1 ziBI5sm@9aH1%p0}Pk9rQ=pWM7e&Ie|*$1c078`!>1!;X-`Z$V94}0#N-6>PS2xF;m z@FQ1N{Eq4r(P;Tnh;*#_CK!W0Add6$Dx!PG0O-Ke(57j4-mNhN;^0>LHE-r4T?i~) zl#Kr@Q=-z@wLe=g8IF5V~e*tER5ePoR z$|g)(7(s~!h`wWz>WeV)MEn9&ccupcb2*D*)5f%QK9cd6%E_f7?6t`pWnbx;uoy&; zC{|QfW-7S$`_Q|6-z9{Tm#pJe%aiYR_n4y`^(P5xJDW7RT8^4r1T2dtyDUSkgXMpB zN;k)68J@IE3&Nc23D(8`@{`CLMU6i*UhDfijlF`KtlaLV1SBad(642EelC$fD$x~E z0GKoV=;W&9*|l6Ix`(rIGGp}PfO9we{A@566VD$t6!n~}1L3RJvJvGz*( z>|dNWYjxaOd#tvll;3FC`ix?jd7|)WTP@)3z!<4tG}FUa{h&s7HECTpG=ILh?C z5i83kgY&*_Pytk|0BKwn3Lo_+Eop0in0deu|8NeWJ&=Pm>ge^;Ad?AJn4h-6!=#f9 z`bvv&psw=J%A&3cxen0G2pis@{9~-jv-R;uT-5o=)svOch@+}V-kOu!WwhhMO~5aB zLf^_5T)tV<90JsQ1Cb>vTe+3?Vx*Nt$q7a>Ufu=DF}cN84h`ZbN@N&mQSj}=+1-5* zs)gZ6>@r7XK+J5c+>_4)hA~!95NgC~b##V2d`tjk)L?$(61?E*J^6$9?Zf1c2nN4R zV~FokJ^1P~*e3E*M$GfYKa_FG)R<;44Rm4|^@0{WxYw(&G|;4)Uy-2XxF@&#(^OMk zhj%xGM(P-YO#ze`@}B}3bqL`-{9tCVfb?t19(_=Y86rVoWewZ~8>`>m<7qeSU*0@v zHWNuJc8t!m2c7#|Q$NF>^(OXOw_u0$tSl5Y&oA++c|38y@7fo^s=UH}`NiQaaV%4a z^B70x!tf~_vRd1#7Q+qKx~Hu{OlN<`A?j>gQK+w92H#-t!|U>am&9i%N6?Z5s6!Ti zAlzslIusKT3>fG=YJz$^VQ9CwgniRzywXhY`v)hlcM%2%4?Z`WEwbc9E}_|tk$uq& zZ{49Bkj365qkDry z$X9_F>JJ(70UfuF3l4*W@IH^92eG4Wg=LHZOJPtM1}Sy3Q4@u>Bon)l{a+#$e45Dm zF*i3b?*%~{w-edSseT!PcEW}C-@9^^0p_`wB#f15uLfwaT-rH4NcoK2nF0!T9qW9X zVb9A<0B<7ly_Qx&IqsfP?;X#(ftaNg!Cj!pmKyKz^Vq(LjO8^e0OUKd5$7^==qtxb zEq*kv=el&8w&V23P;1E;Jjr50lnQ@C-xJlBwY~~}etP+EqM4e696c|l&r3=|K9&me z86#+!noUS+xpvJ}ut0{s1yj+sfVolw0i460LJwc=gC)xcu{I?!O4p-bLpNz$Z$&4$ zMs|nGUNEQK(8FFFHc>whmks%=^G!UX*KubF71U|JLNBAvg#ya37Z$;re?QsQ%=uQ9 zdH1T-jzVIiTk*}pq=wNg6^-gg3R)2m2f50+;nK^Ep`nbwqOoeRMc}Mw9!N!zWyP5k ze$PAPSC8qgAUXc|U&F!onT5-19)Cn^Q+!=7z9tuZ3N-xw4g8no@6({t>8|;}BEP1& zhbDM3?TYL%FC7cH3SnAZ`Ky^Lx^bP%=G8J$!ez(LPBz9^8rA_w%r*SEFZcf1IA|X` z^02J%MjW&AY^*8 zj-E%MAjvqjz$9=jO^X;~sY9-!U>CiaN~?%+Jelgiz5eDIlZDbcs`ET{g> zEjgc_vQVn(X{`Z8N6IEj`bKK$d)Yee7iAPSKrrIyU;km?P{EoTy~!I?z9$mj_Dooq zBNv5Y(*!~LO$#=iq4&X!*{w(=fWy8JaIWW2jyN#az9XZi@*c{t?4Tl_+%LW1)hjGl zQo;ox!$jjU(NjJKCsU?1AA!2@N?qKAup2%TNMstye6eg*J{td2WUDiuFg83aoZIZ7 z%gMa-p*@b`X@iP=C=udF+y2nZc)i7<%exQ&admL6FEs8f&d9SioAcMp3-j@U&R+8%Fjsi_KT; zZ)exp;+m*MkdR^i*=yc~J~s95P;>9Ezr94``JE_*JC)}UVJx<#-fWp@ zVylk_#dEwO^O?`v)T_#<0y#YFGe^~M4wzx0#uOyT&=v7rKD7^0UgHKL!UyX!@= z2}K6b`gxv;+qx(8%}{oZ42%S|kk}QH_1gBk*Jk*IS+(Ti9LU}%Q+(z_$V{tfF|)}! z%eeoN#fgKS1%Qpn?}He7vL9GPgj0}ruk~Yrm8NZ+7wnP`x+HdJxzqLp|Ltj-|Idc^ n_P99zPW~d_`5$2ZF9sZ7DTV6RR@&^)M+OSAsxsfC%mV)}BXm@) literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step6.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step6.png new file mode 100644 index 0000000000000000000000000000000000000000..56433a0134f103d866fd558a1aec806c9eb32ec5 GIT binary patch literal 13192 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 OmzGcvFA~-B_&)%sO7#u^ literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step7.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step7.png new file mode 100644 index 0000000000000000000000000000000000000000..127eb70fcdb8fd164a968f8afba074286fb22b5c GIT binary patch literal 16273 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 R{NdlZlAOA1xil=`{{nklii!XL literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step8.png b/en/docs/chapter_searching/binary_search_insertion.assets/binary_search_insertion_step8.png new file mode 100644 index 0000000000000000000000000000000000000000..d322ffc3cabc7a22cc56dfb722d92898ec109ca7 GIT binary patch literal 12570 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 KQmB-J2K*n;gEh(k literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/binary_search_insertion.md b/en/docs/chapter_searching/binary_search_insertion.md new file mode 100644 index 000000000..8eb4a06b0 --- /dev/null +++ b/en/docs/chapter_searching/binary_search_insertion.md @@ -0,0 +1,91 @@ +# Binary search insertion + +Binary search is not only used to search for target elements but also to solve many variant problems, such as searching for the insertion position of target elements. + +## Case with no duplicate elements + +!!! question + + Given an ordered array `nums` of length $n$ and an element `target`, where the array has no duplicate elements. Now insert `target` into the array `nums` while maintaining its order. If the element `target` already exists in the array, insert it to its left side. Please return the index of `target` in the array after insertion. See the example shown in the figure below. + +![Example data for binary search insertion point](binary_search_insertion.assets/binary_search_insertion_example.png) + +If you want to reuse the binary search code from the previous section, you need to answer the following two questions. + +**Question one**: When the array contains `target`, is the insertion point index the index of that element? + +The requirement to insert `target` to the left of equal elements means that the newly inserted `target` replaces the original `target` position. Thus, **when the array contains `target`, the insertion point index is the index of that `target`**. + +**Question two**: When the array does not contain `target`, what is the index of the insertion point? + +Further consider the binary search process: when `nums[m] < target`, pointer $i$ moves, meaning that pointer $i$ is approaching an element greater than or equal to `target`. Similarly, pointer $j$ is always approaching an element less than or equal to `target`. + +Therefore, at the end of the binary, it is certain that: $i$ points to the first element greater than `target`, and $j$ points to the first element less than `target`. **It is easy to see that when the array does not contain `target`, the insertion index is $i$**. The code is as follows: + +```src +[file]{binary_search_insertion}-[class]{}-[func]{binary_search_insertion_simple} +``` + +## Case with duplicate elements + +!!! question + + Based on the previous question, assume the array may contain duplicate elements, all else remains the same. + +Suppose there are multiple `target`s in the array, ordinary binary search can only return the index of one of the `target`s, **and it cannot determine how many `target`s are to the left and right of that element**. + +The task requires inserting the target element to the very left, **so we need to find the index of the leftmost `target` in the array**. Initially consider implementing this through the steps shown in the figure below. + +1. Perform a binary search, get an arbitrary index of `target`, denoted as $k$. +2. Start from index $k$, and perform a linear search to the left until the leftmost `target` is found and return. + +![Linear search for the insertion point of duplicate elements](binary_search_insertion.assets/binary_search_insertion_naive.png) + +Although this method is feasible, it includes linear search, so its time complexity is $O(n)$. This method is inefficient when the array contains many duplicate `target`s. + +Now consider extending the binary search code. As shown in the figure below, the overall process remains the same, each round first calculates the midpoint index $m$, then judges the size relationship between `target` and `nums[m]`, divided into the following cases. + +- When `nums[m] < target` or `nums[m] > target`, it means `target` has not been found yet, thus use the normal binary search interval reduction operation, **thus making pointers $i$ and $j$ approach `target`**. +- When `nums[m] == target`, it indicates that the elements less than `target` are in the interval $[i, m - 1]$, therefore use $j = m - 1$ to narrow the interval, **thus making pointer $j$ approach elements less than `target`**. + +After the loop, $i$ points to the leftmost `target`, and $j$ points to the first element less than `target`, **therefore index $i$ is the insertion point**. + +=== "<1>" + ![Steps for binary search insertion point of duplicate elements](binary_search_insertion.assets/binary_search_insertion_step1.png) + +=== "<2>" + ![binary_search_insertion_step2](binary_search_insertion.assets/binary_search_insertion_step2.png) + +=== "<3>" + ![binary_search_insertion_step3](binary_search_insertion.assets/binary_search_insertion_step3.png) + +=== "<4>" + ![binary_search_insertion_step4](binary_search_insertion.assets/binary_search_insertion_step4.png) + +=== "<5>" + ![binary_search_insertion_step5](binary_search_insertion.assets/binary_search_insertion_step5.png) + +=== "<6>" + ![binary_search_insertion_step6](binary_search_insertion.assets/binary_search_insertion_step6.png) + +=== "<7>" + ![binary_search_insertion_step7](binary_search_insertion.assets/binary_search_insertion_step7.png) + +=== "<8>" + ![binary_search_insertion_step8](binary_search_insertion.assets/binary_search_insertion_step8.png) + +Observe the code, the operations of the branch `nums[m] > target` and `nums[m] == target` are the same, so the two can be combined. + +Even so, we can still keep the conditions expanded, as their logic is clearer and more readable. + +```src +[file]{binary_search_insertion}-[class]{}-[func]{binary_search_insertion} +``` + +!!! tip + + The code in this section uses "closed intervals". Readers interested can implement the "left-closed right-open" method themselves. + +In summary, binary search is merely about setting search targets for pointers $i$ and $j$, which might be a specific element (like `target`) or a range of elements (like elements less than `target`). + +In the continuous loop of binary search, pointers $i$ and $j$ gradually approach the predefined target. Ultimately, they either find the answer or stop after crossing the boundary. diff --git a/en/docs/chapter_searching/index.md b/en/docs/chapter_searching/index.md new file mode 100644 index 000000000..f8e3b8bc8 --- /dev/null +++ b/en/docs/chapter_searching/index.md @@ -0,0 +1,9 @@ +# Searching + +![Searching](../assets/covers/chapter_searching.jpg) + +!!! abstract + + Searching is an unknown adventure, where we may need to traverse every corner of a mysterious space, or perhaps quickly pinpoint our target. + + In this journey of discovery, each exploration may yield an unexpected answer. diff --git a/en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png b/en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_brute_force.png new file mode 100644 index 0000000000000000000000000000000000000000..33fca976ab7f3704de7bd37cfc08319341cd410b GIT binary patch literal 13071 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 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_hashtable_step2.png b/en/docs/chapter_searching/replace_linear_by_hashing.assets/two_sum_hashtable_step2.png new file mode 100644 index 0000000000000000000000000000000000000000..bed0ac02f10e98dc721c0376c6e6681bb246cd52 GIT binary patch literal 14673 zcmbVxWmH_vvgn>+aJS$D3lM?@3+@nHf;+(-0>N#7V8J~=&|tv>!GcY2ch|v#6Flgf zeCOP??)h=ny6g3i-CcWERaaGaRrjunR8x74jX{n9006eUob($2Kt>F~V`xZ-?)nRx z1p+u%Q__@qe0^-v$KhbiI9+x!NI}c??HiqfsKugs;a6zJv}ioF=l3F+1c3(3kx+hHI z#l^+>`T4)Ee)p{Qd z?%%ZWQhg-4HOl{+Umffan!Gl=x$>ps%hu^h?d-AFK$o|-_n({Fqobpy*~ZWPIbmU8 z9u=P5@Y9u*mAbmR3|K~Vbo9W+-qQY(!I!DR;lhZ92wh!W=di`Nwz#>K%iZ1Gf`S6s zPx0ZcVM_;>7Z(>ZduQ>TJ1MXf$xoA2qm_kyg)S~Grx$nYCpSxn`vpDACs&u7$D48% zlhmQZMzDJShT6l!!|C1K@}~Wc&D}`YR@d}e-N+26WASb2!buH%KMztxiq;r z*)!dv(OezFR%#%TJWpj~2Xc5rO06v6oCTh7+oU{yst~=bMF{36!JDErZ(mwfa|y z?qh2&l>qOF$Lo!P@P8|IeRa@Ot@D{`(fM$Z4j8NP)|H(U6a9MTBbD{;!c#|&;|c@# zURqqIvNa3ww$74o!@Ny#MfP%*av#n5QL1_M1Ay&3_<>Yv)7b;8LD{QCQ$IH`#_E5*Ly{F0Tyf!U9Vt=jV^#`tmJ!qB~-5t6EoAmBQ3nWT~_}=cOsexl;S92Z|pG zOuk!6W%;^y5$B$%QIP;P!)k%anWRmeW!Cr9Ui!?iDZbAhVL>lop7gVJnLd_==Q0JqD$F<@eG-}Y4;&JlPcb<~J6~`@`5a{v z_!5~vni1Y^sHbRgJF+Sbu^i3`S9j}vAe@A1By`VpmCPNa&pp~D?v%J*K5BwcoT-;} zdUMbKuLVKKZeI<`vaf@QLDJGvgypw|<@x-ajjY3v4 zJupVzUcb&W%GErLDMk!8?D3)Dnw4dH!)r}*d?=NrQp{uDwDP>#1nS(ZK;`A93BV@b zfG*1->)V)N(hP&H33H-)-BDU13*GVoCLlo}XZLA&5TGiAJeOm8NMg$JB0<^Q@%(0Z z=ks_RMzz~;)1OZ8dllvjB?Kb{Q0hX-gzc#eNX7D5#Cvlt6Ds_;{GRQ!q!}T|yA@`4 z4Io!$V;irNypqpt^@X@wAQu^f<>6(>bOX~LLENhHrH5VcQpFTD2>N7xcEy5x=d1{@ z4kD`WS7--z7%hSn^W_dMp=DCY8@Ac>dd50AE9tk@<61h%z{2-myRwW?-;DPzGTdSloEV^s&`h#9{B$|4{ixW+(Y5M3L zZ*}OGEC12g!E?!2aXdmFfPxC=;F|QIY(86+2H=lxeVw&aE%RfP5M%XUs&pXeqdfmu zj071baHkW@GsIUbj1Bp}g$F;=V;t=%6fkFOAm_95F&ZgaOB)V>xi>y&E5alMAHCF{ z{FItggtWd8VTF*SO0pNW{z3D`Uo9hR_|jc&-{Vvt6CkE*{@yCQ_3mX)qx9c)9(Sz} z$(>h#OP4=T!2g0kT6+3g0nMF{BeTE)99hERt@4LkLaaRGs-`HCMxhZws5 zz8Roo#h`%My6u_tDV>su(+Mg>5Q?IgsAOq8B8c#4=t>F1pC4Qo4}JBg?X(6WOWJ?| zjqRzncv=Kr6|%-n zs3%(U8Ieo(aXs_Ym)-97maR1vI9uTSDSFizYflKPp^UEweMSl~2TfV9 zcdPWBkt3r_)@2(h;OpY&V{Y{*b60y?BMt4CaG=i-i8Pm2gj#$UGR99X z?kEPeuj?Zf&ktLKR0ncTQat7XBR4l~ZAgBz=1i_j9!~0~N4sFsxpq{36oTJ=ps6L} z9)N&11IIM*!_@P0YBadc)y%s}b*PQN3$?X61WloE<*1xJiRXq&D_;sh zjSGRwn~~P}(l*7lA`nfeCEyEdd;n67OBk_e)RXj(@pdcRjuk)pSBV|92#7%EF@B*B z0xL~u-EOEZ*w=q?<{@eZ%Z36A?#jm?tLJd*dQddf`yRv^hk+1`(U%5F&?tZh!-Hn} zjl0>Q=kDfM0^GP2yX{`cbLK!~h64xm-t4TE_m?mw?7J96(@EIP0q13_fBQv~B^Au* zaYAVh#RZ39{SUYVC4Gef_5s9TSJMjAXH~cYA!Wmsv{c0|MuYNrPhkwJ)##=`mlje< z>R=%*QNyI!apjx}blkOx|GS#)RDLK;+y=y^f(#+mA}0L$8zAf7OBz-O!86E{0eZz* zN>MnWv{9{;VVP9AB|LVH0Wyle-JsGjd`-BfWf~3|ux59RL-luV&EC~z9FL!V0VB|p zTYvDaIc^=~1PN=E4oZkSH~>0-E8U&lF_Qi+A8h|TuP>?QO( zN<>KZ9Vtpa!19SuNuXdt&-GD=Z7^SXM;BbEwoBpA9)Z|V%F4X5zU=dYZVDWAqMVz;x1-Dbg8KgGkHDWY*a4L)<&Q^S2 zHnT+!*x43o4QXo-{%;`w0A?Z}ELPuHb|brbaJJb!7ZUBfA)NU!9AUxz+H?l@{fdi^2OrVxR-Z z^rA#{`go?)6)PG5-=RKu193M+hk~#-5Ig`+{NE4wm=u674wb?LNdq993V)R9wz|nh z$-nO&2Skx{t+pG`;5q1~WtuE_zz5YBAiGj&(_|PG177yAtV9L)67s$#i-o@@T@g7= z1*mp@GzX#vRrpFlV6RN!hG}%uXjEN`4cZYx;2@I)a@$cEf#juhtgL{Ta*TKCRRvUp-Db6_2~Hya5pGQmew!I zTwY=5xW;_jyX}m#(qMX1Kui+b)YlN@tD%wXqUP&KK8x?0gsIW{65wBY^a>DcQ|CFZ9;}@Nk$`zWf$a2?_g;11WeEbqD|puLj#Z zOV=plnosQ4E>7}@4WGPJviE)s3qrCP`x6QUeWqze*sZpSR{#5ulrkQ0ji&;HdOo{m zJI2DQioa4B6-dB1b%7Xj2(-(XVn z>>5?j5hVi@Ill>bCFy(EQV{^qzx(!?+tN&XT{cPpp9BH~eDJ_IscLNV1dGE8$@vVS;`JM7r z>nk%kq2-yb{O1~f#)DB$5>$Tw$z4UR#1nb*9O|#UU4Zp$TW=u+E}~?g2*A=fk>*w} z6h)^O$b1hj5|<_%p4A^ha80$Dq;5z!p(tc~B3QINhBvfO^~oWNMrW4Hs&p>~FjOoL zMXjuVZ1THGB9+x^LIVc_TuSlX9Al$eWOUQil6*tpg2By=25NSsIc|ZkD7_(17In?S z3FTOWxJ;wNe;E95W$n)2l&&cH1n^}UAUP9|^?YS;vz?D`*kIcpvH&-Lz}E=94mVaU$m6hIuXGGOp-B8i)R#Pe~U?YY$-oETRDVQzRUPz_EJmnna0pp zv@LE{SAGb}i9{3NgF_1AFlmF}l}FIl#42Mt?>f zi2?6?B!?w2siOP~^?krV2L0&pQj4WttvB7rp%HSfxz*Sg>`9K5+O)t45=c`RS}(m%LkmTtf#rn)bWk9CMhw?<+PSL~H0z@%f<^;;pn`p01&WX=FH(K* z!~rxR=oS*B8WE5v8M$M6&YOpiwv%?lJ)h1XuKG3JWs61&*_SI$tn5x4%l`b_ETE}U zQTiwE4^1EO#G&eL&JGR-F?SxlUCU_0(cXOWJe%DUwGVz)n&6T@n5MA05Jg1X8m9*> znJ3U4_X@vI0YsKjd6->C+@uSE)O+c2O0PpWBL109onHaY{o78n^Mi{4t@Ad*evC=s z#=xp``}<)2Uw7!EWGUbh+ueKF@;&pz<5YxZUwUxh=R)(swsTbx=V+0R>F<{TQG)`e zW6Px?iC%U?S0kMlP<=t8d;hM|-I}<%cB78~IGS7t%I*G@vVtE}&^M&8v7(sXaybGT zXnejgs4jrY|5^H=s!|33$&TQH40mIjJdl0`lt%#%7+^F`R}`dc$$BZU&Ep>t?1?I` zO1i&h?ju9Xy;Q1S-n|(T2O2C}cm+u$5OzIz3bVa(JvIf>!i*u~$A%t88m!P!=OwYW z-d@$Gv5H->f!F81uPbj~IoOQ@_O@y@6~aJENSn%yTS4BbrJ@H$IypY zo?jH-9cT`Xe^tDspZl6hLG;bk-9D1XCo@E4TB%z`5TY0+jwz28f`VT!N zj7LYrbQcL=85vhvdnxFFZKYzPMzx_JO~ou#4s%uoYj!YNwVMYcl%*v_hOKrN!3iEDaQEHBua*#W z$ButnnL6)+zyTJ?#V_d3q}b}#5GX)BA9PqrgRO4fkPvAOH~3}6cAV@NRuF7k2@Nh^ zkZcF2Zi%KA@@3ka0Te@^`=YdF-o(jOS` zVYijo-Sy>@3TiN#DZmZpXE@-O@VI{&JsT}iY~4Qfer$smTM?twvB$&p?#Y$3jVYq$9Okj>E=@0ClK+I}3hOB$8K3 ziW7p`P_)O)=ODr6wJ<^)tQSc97TcerW0>9fUbp--1aLP?2wN*kZhI5n1p|W8J|N~; z0@RcD>rYdLF>-qq-$&X6j{=~f8XwFhvm|e@b4n@4GzQ_^O&1Dz+F;_}Nnun~5mu?Kq< zWv0e?!0OneW{g0TCrU4WT0=R?Hh;wmG~sXUQfW#dC7O|kRfJ(5WrIOCqVtUW zf3_J>WiO#{R)4Huh6Z7!`E=_lx=;)eBbJi(FvXJ|8frY%F5CP{)Exg8nEGsp3^60r z9VDE&Jf4;mV#vg5woD)*(D%x~|Ha*0)gszsamk|*kC5`^$4nG8%}7J{jBmIp4w z)H{r*9_mQ@SRNO89w<5!m#?@<;D-Kq^mWof9z#!il)B`2f2=@|tJX zTb9$~wM#UgyKZ>135mX-fdcZh&>mFI#KPw5wm7jU^mqukkqra^HvT!8L;g9Lai4%A z0I;ww8Vwlj#Pt3Q_`yQpfltB8>a-IskbE9Zpyn)5pfQa z0s5GsKv(gXfYs~KYgIw{CKIl2hX{%QCk-^yWXL6LrXl8g}`EcyW3BuZ*qO&v5_iU*~`O@bK?)4G{lmPhWzlCI0tTjf(nD)kFNDDkk?o(K@o1&l&MU z)hWdoKYW(|j8j2lRUV;MZT?O9`BnuRzOw(m0w*JOl-+s{Z;|r1GQD3<{@4W2?SPXc z_+dU;)Y^7d-+t2Cm5{awof2L6RO7{|QEMHg^fX7u zvGMzO^$m0F2Qo1mkeo?4A~QS0!mi5c-Z$j=fxvJIxq3JV-88-VIgy@B*KdAOYaR%G zLZS9xHTL&Jl=PRXP6RLq`)p(y)u-%PPn?mkpWxe0c=mwK6~e&Gbc)BwNfakuWCOn) z2w?0zEV!>Y?KcaJjF0sJzZE3O*ilCClSQ;HB5`~@ACFk3lZdf3Lm;O*RIcB0=Gn5v z%tc_rGWP~b5Z%+czD11Oi1PSzSXi%wo1Hy7G?SH<>(oCd2>zVPZGfoexF-BnzqS&H zC}Dd2B^L>d&+S?&Gw2Owx7je()s%t z91F=ewrK=YXTO+4CzOgJs5Q!`SmW_>Bq*XU(343GDK@dSPoEU_;qAASPmN-SCSm1V ze@YWAw_m<_?+6%dPG;iAy$O6oUWx48xVU<^;V1Y6+H4hIe>D4Z{^{}Tu#cGN_#Z6% zgw=y33Fiq@%HH2O@=^f|nl3Mr-jC6$*wk?*N5(#naN{Dv{rFNHH@5oOQ6J~0VT;I~ zzPFK)LWk>_r^NHc!(7EmJ4-4LVrioO6O1DMlcLJL9Xvi*G>2Vuw>&`FJPNKp%Gh_? zZl%4O2yaVP<4=@{a0UU zUO=?WTxV3IoyZ55_5(k%AU2PlCGU)R&B&YbLsZUws%wu%^ui%lXmg=xq7bGar^PK+ zSs!PZc(~RfGsr=tGu5O8ALLiojvH#6x25XaIX1}#;69=KfH&|Q;_{hKv5$Lp6RZ#b zyh;yp&YsPk3qW&MUSvN>C>kC~b%L!WTXwCLxjhKS62KJ2kE(%{u3oiY7^!!=9JE^# zXJlx!U0>Be4kvsXQfV>5hi?aP;ozOzu6|0Qv^0=rV{asQ@I61ON!L23P|3n;40u-p zxN#8!dB)>k0*qO0?eM~c)AFYD5Se5M^n<~(#mdaf&R6oMD9PnACb(}io(hk&qv9DH zO9d6OA!h5JwC%#)XXU0qGH&kP!k)#2L#3D<`QR^H2oys2#yCy{h1sd7J}Qr-g)KYM z48g=u)#m-LcnVrN&{8z*FeK4_t0Jx@SG$O5`CgnvC*XM zXjqY^8EVd83YY>!K~Hee;dFq%Wxv>t&OT#$5S}EZNwVxR`6@2lLl#->l@~rVb-{i} zk6ev?!6Hvu!}8_csd&hF%+0n*1*o$0@Mvh^7vNMklfC=ND}Mzi?#BsFdaASZ2fW@{ zKe^Q6_rx&YGyT=3*ZSlx39={7W#?qqbgXnPj7l}-NR7(eww##HW*z4k|D05Ty~Kz} z$zbWl57x9gxc-pXMji&JWQ2LMc};v#QdYSPULRi(Fg1tr9jED)h$&f6fmD=3@2!Zw z(b6+}!D{n_@1=jbOprMn&NG1(=g>=Gy)NdL^@w%o{r;9~I_^qtkm|i%=fe5vVa>9K z@j6ntmmWhgXo>v&sby5=iEsvc;?X>Xih%7z>9wT=V=R_N)*S1(OJkphE^X&qY%x7- zFsW99y8&>A+*VeWGhLa{g6`Z{3T{MU4ZtCo^AQbFcV$18K%hgIKXeyog zWR$+UgI{>|Yr#xNdp7yjb70@x;x|q*O3X{8o;+!980&+@yRG3`bV}JAJ?~nsFXjc6 zQaahtP`uuT_z%Yh<%wA%JH_^$4y{}`(eBWyHBrBd0~gxFkVM@G`uJlTv@WN&anu5E z&0Eba!>5SV7b8~{M?)wr`QIMvLd_noNStU=>Ua$L;z#Y1@8ez2>&w&WvPCif<5Y@w ztcd83qq_t!^w&MZQ6za!Jx7g^m@QOSNQ1`G9$GcTe=- z&yS*t3BKn!94nx5Pn>Mdw9ix{ac^?tWG~84 zj8>+6Z?~|S>PrnL_VdnbnKBN#4NMe0CXD~#exW0~avu5T}5R}c^D+Hq90M|^3T4+kltyS%xX9efM0`|Pv zA=??Jm!?x|p2}nmL^jybrHm0~O}hZ+dcRBJYSI;2TK{;$*@vR(uSg{C0J1V-PN%aJ zy*`u^>5|3Q%71<(-TTWTBw5ax`tM=#@%xscG62^)R@Mm^M>|?=$Q?e>LVM)wFYXFya zbM8jj93jPr`nRfL-}#3A09F{+6ST5=F!~ZK4#+Vx=k~Yju?wl>S*vGzAw8sZFYtD^1Kv4W+xcQnEJ~Xhc?&hwU$a+Gz&wUU#Gj(Zf6G9o z`nJ?lo%IX!eWGgU%7pqWNVA`WPc0_hAl<)QVzw*%LDrj%osRt11q(BtmX1Y$T}Y*v zGUMd&`f9Aau12-Pn_;Q=B>AN8C5YuHa~^vsJM|fJ4VSs5$tM_F8JG+#F)-~+bmb5V zG4nLgdSa8si|*V1w90=@L#;#PsX!!Hy7S6qWc>>uN)2my#@wE+*~|s?-bbwdUZ#^^ zFzyWv79@Oq%Mt8cEh7C}Wywp@O{8<9iv;KR5)QLx_OD!% zbNbv#h|2+z?&^BRFgDZMt3O?f{X+w)*znCuw?7&f2(5ph(4QlDIXp3@dQsA|!MFwp zwunx%eqVXD^(@c2OTH}#2VeZVC0nHe~SpW?!AV] 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 E4}Jhu0{{R3 literal 0 HcmV?d00001 diff --git a/en/docs/chapter_searching/replace_linear_by_hashing.md b/en/docs/chapter_searching/replace_linear_by_hashing.md new file mode 100644 index 000000000..f02c65ade --- /dev/null +++ b/en/docs/chapter_searching/replace_linear_by_hashing.md @@ -0,0 +1,47 @@ +# Hash optimization strategies + +In algorithm problems, **we often reduce the time complexity of algorithms by replacing linear search with hash search**. Let's use an algorithm problem to deepen understanding. + +!!! question + + Given an integer array `nums` and a target element `target`, please search for two elements in the array whose "sum" equals `target`, and return their array indices. Any solution is acceptable. + +## Linear search: trading time for space + +Consider traversing all possible combinations directly. As shown in the figure below, we initiate a two-layer loop, and in each round, we determine whether the sum of the two integers equals `target`. If so, we return their indices. + +![Linear search solution for two-sum problem](replace_linear_by_hashing.assets/two_sum_brute_force.png) + +The code is shown below: + +```src +[file]{two_sum}-[class]{}-[func]{two_sum_brute_force} +``` + +This method has a time complexity of $O(n^2)$ and a space complexity of $O(1)$, which is very time-consuming with large data volumes. + +## Hash search: trading space for time + +Consider using a hash table, with key-value pairs being the array elements and their indices, respectively. Loop through the array, performing the steps shown in the figures below each round. + +1. Check if the number `target - nums[i]` is in the hash table. If so, directly return the indices of these two elements. +2. Add the key-value pair `nums[i]` and index `i` to the hash table. + +=== "<1>" + ![Help hash table solve two-sum](replace_linear_by_hashing.assets/two_sum_hashtable_step1.png) + +=== "<2>" + ![two_sum_hashtable_step2](replace_linear_by_hashing.assets/two_sum_hashtable_step2.png) + +=== "<3>" + ![two_sum_hashtable_step3](replace_linear_by_hashing.assets/two_sum_hashtable_step3.png) + +The implementation code is shown below, requiring only a single loop: + +```src +[file]{two_sum}-[class]{}-[func]{two_sum_hash_table} +``` + +This method reduces the time complexity from $O(n^2)$ to $O(n)$ by using hash search, greatly improving the running efficiency. + +As it requires maintaining an additional hash table, the space complexity is $O(n)$. **Nevertheless, this method has a more balanced time-space efficiency overall, making it the optimal solution for this problem**. diff --git a/en/docs/chapter_searching/searching_algorithm_revisited.assets/searching_algorithms.png b/en/docs/chapter_searching/searching_algorithm_revisited.assets/searching_algorithms.png new file mode 100644 index 0000000000000000000000000000000000000000..fff1066ffc033f9e73dbde2e0bc0c9428dbb4d85 GIT binary patch literal 34523 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 algorithms (searching algorithm) are used to search for one or several elements that meet specific criteria in data structures such as arrays, linked lists, trees, or graphs. + +Searching algorithms can be divided into the following two categories based on their implementation approaches. + +- **Locating the target element by traversing the data structure**, such as traversals of arrays, linked lists, trees, and graphs, etc. +- **Using the organizational structure of the data or the prior information contained in the data to achieve efficient element search**, such as binary search, hash search, and binary search tree search, etc. + +It is not difficult to notice that these topics have been introduced in previous chapters, so searching algorithms are not unfamiliar to us. In this section, we will revisit searching algorithms from a more systematic perspective. + +## Brute-force search + +Brute-force search locates the target element by traversing every element of the data structure. + +- "Linear search" is suitable for linear data structures such as arrays and linked lists. It starts from one end of the data structure, accesses each element one by one, until the target element is found or the other end is reached without finding the target element. +- "Breadth-first search" and "Depth-first search" are two traversal strategies for graphs and trees. Breadth-first search starts from the initial node and searches layer by layer, accessing nodes from near to far. Depth-first search starts from the initial node, follows a path until the end, then backtracks and tries other paths until the entire data structure is traversed. + +The advantage of brute-force search is its simplicity and versatility, **no need for data preprocessing and the help of additional data structures**. + +However, **the time complexity of this type of algorithm is $O(n)$**, where $n$ is the number of elements, so the performance is poor in cases of large data volumes. + +## Adaptive search + +Adaptive search uses the unique properties of data (such as order) to optimize the search process, thereby locating the target element more efficiently. + +- "Binary search" uses the orderliness of data to achieve efficient searching, only suitable for arrays. +- "Hash search" uses a hash table to establish a key-value mapping between search data and target data, thus implementing the query operation. +- "Tree search" in a specific tree structure (such as a binary search tree), quickly eliminates nodes based on node value comparisons, thus locating the target element. + +The advantage of these algorithms is high efficiency, **with time complexities reaching $O(\log n)$ or even $O(1)$**. + +However, **using these algorithms often requires data preprocessing**. For example, binary search requires sorting the array in advance, and hash search and tree search both require the help of additional data structures, maintaining these structures also requires extra time and space overhead. + +!!! tip + + Adaptive search algorithms are often referred to as search algorithms, **mainly used for quickly retrieving target elements in specific data structures**. + +## Choosing a search method + +Given a set of data of size $n$, we can use linear search, binary search, tree search, hash search, and other methods to search for the target element from it. The working principles of these methods are shown in the following figure. + +![Various search strategies](searching_algorithm_revisited.assets/searching_algorithms.png) + +The operation efficiency and characteristics of the aforementioned methods are shown in the following table. + +

Table   Comparison of search algorithm efficiency

+ +| | Linear search | Binary search | Tree search | Hash search | +| ------------------ | ------------- | --------------------- | --------------------------- | -------------------------- | +| Search element | $O(n)$ | $O(\log n)$ | $O(\log n)$ | $O(1)$ | +| Insert element | $O(1)$ | $O(n)$ | $O(\log n)$ | $O(1)$ | +| Delete element | $O(n)$ | $O(n)$ | $O(\log n)$ | $O(1)$ | +| Extra space | $O(1)$ | $O(1)$ | $O(n)$ | $O(n)$ | +| Data preprocessing | / | Sorting $O(n \log n)$ | Building tree $O(n \log n)$ | Building hash table $O(n)$ | +| Data orderliness | Unordered | Ordered | Ordered | Unordered | + +The choice of search algorithm also depends on the volume of data, search performance requirements, data query and update frequency, etc. + +**Linear search** + +- Good versatility, no need for any data preprocessing operations. If we only need to query the data once, then the time for data preprocessing in the other three methods would be longer than the time for linear search. +- Suitable for small volumes of data, where time complexity has a smaller impact on efficiency. +- Suitable for scenarios with high data update frequency, because this method does not require any additional maintenance of the data. + +**Binary search** + +- Suitable for large data volumes, with stable efficiency performance, the worst time complexity being $O(\log n)$. +- The data volume cannot be too large, because storing arrays requires contiguous memory space. +- Not suitable for scenarios with frequent additions and deletions, because maintaining an ordered array incurs high overhead. + +**Hash search** + +- Suitable for scenarios with high query performance requirements, with an average time complexity of $O(1)$. +- Not suitable for scenarios needing ordered data or range searches, because hash tables cannot maintain data orderliness. +- High dependency on hash functions and hash collision handling strategies, with significant performance degradation risks. +- Not suitable for overly large data volumes, because hash tables need extra space to minimize collisions and provide good query performance. + +**Tree search** + +- Suitable for massive data, because tree nodes are stored scattered in memory. +- Suitable for maintaining ordered data or range searches. +- In the continuous addition and deletion of nodes, the binary search tree may become skewed, degrading the time complexity to $O(n)$. +- If using AVL trees or red-black trees, operations can run stably at $O(\log n)$ efficiency, but the operation to maintain tree balance adds extra overhead. diff --git a/en/docs/chapter_searching/summary.md b/en/docs/chapter_searching/summary.md new file mode 100644 index 000000000..7c49cbdab --- /dev/null +++ b/en/docs/chapter_searching/summary.md @@ -0,0 +1,8 @@ +# Summary + +- Binary search depends on the order of data and performs the search by iteratively halving the search interval. It requires the input data to be sorted and is only applicable to arrays or array-based data structures. +- Brute force search locates data by traversing the data structure. Linear search is suitable for arrays and linked lists, while breadth-first search and depth-first search are suitable for graphs and trees. These algorithms are highly versatile, requiring no preprocessing of data, but have a higher time complexity of $O(n)$. +- Hash search, tree search, and binary search are efficient searching methods, capable of quickly locating target elements in specific data structures. These algorithms are highly efficient, with time complexities reaching $O(\log n)$ or even $O(1)$, but they usually require additional data structures. +- In practice, we need to analyze factors such as data volume, search performance requirements, data query and update frequencies, etc., to choose the appropriate search method. +- Linear search is suitable for small or frequently updated data; binary search is suitable for large, sorted data; hash search is suitable for scenarios requiring high query efficiency without the need for range queries; tree search is appropriate for large dynamic data that needs to maintain order and support range queries. +- Replacing linear search with hash search is a common strategy to optimize runtime, reducing the time complexity from $O(n)$ to $O(1)$.