data-structure-typed 1.53.1 → 1.53.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +6 -0
  3. package/dist/cjs/data-structures/heap/heap.d.ts +165 -0
  4. package/dist/cjs/data-structures/heap/heap.js +165 -0
  5. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  6. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +426 -0
  7. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +430 -2
  8. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  9. package/dist/mjs/constants/index.js +1 -0
  10. package/dist/mjs/constants/index.js.map +1 -0
  11. package/dist/mjs/data-structures/base/index.js +1 -0
  12. package/dist/mjs/data-structures/base/index.js.map +1 -0
  13. package/dist/mjs/data-structures/base/iterable-element-base.js +1 -0
  14. package/dist/mjs/data-structures/base/iterable-element-base.js.map +1 -0
  15. package/dist/mjs/data-structures/base/iterable-entry-base.js +1 -0
  16. package/dist/mjs/data-structures/base/iterable-entry-base.js.map +1 -0
  17. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +1 -0
  18. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -0
  19. package/dist/mjs/data-structures/binary-tree/avl-tree.js +1 -0
  20. package/dist/mjs/data-structures/binary-tree/avl-tree.js.map +1 -0
  21. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js +1 -0
  22. package/dist/mjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  23. package/dist/mjs/data-structures/binary-tree/binary-tree.js +1 -0
  24. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +1 -0
  25. package/dist/mjs/data-structures/binary-tree/bst.js +1 -0
  26. package/dist/mjs/data-structures/binary-tree/bst.js.map +1 -0
  27. package/dist/mjs/data-structures/binary-tree/index.js +1 -0
  28. package/dist/mjs/data-structures/binary-tree/index.js.map +1 -0
  29. package/dist/mjs/data-structures/binary-tree/rb-tree.js +1 -0
  30. package/dist/mjs/data-structures/binary-tree/rb-tree.js.map +1 -0
  31. package/dist/mjs/data-structures/binary-tree/segment-tree.js +1 -0
  32. package/dist/mjs/data-structures/binary-tree/segment-tree.js.map +1 -0
  33. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +1 -0
  34. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +1 -0
  35. package/dist/mjs/data-structures/graph/abstract-graph.js +1 -0
  36. package/dist/mjs/data-structures/graph/abstract-graph.js.map +1 -0
  37. package/dist/mjs/data-structures/graph/directed-graph.js +1 -0
  38. package/dist/mjs/data-structures/graph/directed-graph.js.map +1 -0
  39. package/dist/mjs/data-structures/graph/index.js +1 -0
  40. package/dist/mjs/data-structures/graph/index.js.map +1 -0
  41. package/dist/mjs/data-structures/graph/map-graph.js +1 -0
  42. package/dist/mjs/data-structures/graph/map-graph.js.map +1 -0
  43. package/dist/mjs/data-structures/graph/undirected-graph.js +1 -0
  44. package/dist/mjs/data-structures/graph/undirected-graph.js.map +1 -0
  45. package/dist/mjs/data-structures/hash/hash-map.js +1 -0
  46. package/dist/mjs/data-structures/hash/hash-map.js.map +1 -0
  47. package/dist/mjs/data-structures/hash/index.js +1 -0
  48. package/dist/mjs/data-structures/hash/index.js.map +1 -0
  49. package/dist/mjs/data-structures/heap/heap.d.ts +165 -0
  50. package/dist/mjs/data-structures/heap/heap.js +166 -0
  51. package/dist/mjs/data-structures/heap/heap.js.map +1 -0
  52. package/dist/mjs/data-structures/heap/index.js +1 -0
  53. package/dist/mjs/data-structures/heap/index.js.map +1 -0
  54. package/dist/mjs/data-structures/heap/max-heap.js +1 -0
  55. package/dist/mjs/data-structures/heap/max-heap.js.map +1 -0
  56. package/dist/mjs/data-structures/heap/min-heap.js +1 -0
  57. package/dist/mjs/data-structures/heap/min-heap.js.map +1 -0
  58. package/dist/mjs/data-structures/index.js +1 -0
  59. package/dist/mjs/data-structures/index.js.map +1 -0
  60. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +426 -0
  61. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +431 -2
  62. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  63. package/dist/mjs/data-structures/linked-list/index.js +1 -0
  64. package/dist/mjs/data-structures/linked-list/index.js.map +1 -0
  65. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +1 -0
  66. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +1 -0
  67. package/dist/mjs/data-structures/linked-list/skip-linked-list.js +1 -0
  68. package/dist/mjs/data-structures/linked-list/skip-linked-list.js.map +1 -0
  69. package/dist/mjs/data-structures/matrix/index.js +1 -0
  70. package/dist/mjs/data-structures/matrix/index.js.map +1 -0
  71. package/dist/mjs/data-structures/matrix/matrix.js +1 -0
  72. package/dist/mjs/data-structures/matrix/matrix.js.map +1 -0
  73. package/dist/mjs/data-structures/matrix/navigator.js +1 -0
  74. package/dist/mjs/data-structures/matrix/navigator.js.map +1 -0
  75. package/dist/mjs/data-structures/priority-queue/index.js +1 -0
  76. package/dist/mjs/data-structures/priority-queue/index.js.map +1 -0
  77. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +1 -0
  78. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  79. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +1 -0
  80. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  81. package/dist/mjs/data-structures/priority-queue/priority-queue.js +1 -0
  82. package/dist/mjs/data-structures/priority-queue/priority-queue.js.map +1 -0
  83. package/dist/mjs/data-structures/queue/deque.js +1 -0
  84. package/dist/mjs/data-structures/queue/deque.js.map +1 -0
  85. package/dist/mjs/data-structures/queue/index.js +1 -0
  86. package/dist/mjs/data-structures/queue/index.js.map +1 -0
  87. package/dist/mjs/data-structures/queue/queue.js +1 -0
  88. package/dist/mjs/data-structures/queue/queue.js.map +1 -0
  89. package/dist/mjs/data-structures/stack/index.js +1 -0
  90. package/dist/mjs/data-structures/stack/index.js.map +1 -0
  91. package/dist/mjs/data-structures/stack/stack.js +1 -0
  92. package/dist/mjs/data-structures/stack/stack.js.map +1 -0
  93. package/dist/mjs/data-structures/tree/index.js +1 -0
  94. package/dist/mjs/data-structures/tree/index.js.map +1 -0
  95. package/dist/mjs/data-structures/tree/tree.js +1 -0
  96. package/dist/mjs/data-structures/tree/tree.js.map +1 -0
  97. package/dist/mjs/data-structures/trie/index.js +1 -0
  98. package/dist/mjs/data-structures/trie/index.js.map +1 -0
  99. package/dist/mjs/data-structures/trie/trie.js +1 -0
  100. package/dist/mjs/data-structures/trie/trie.js.map +1 -0
  101. package/dist/mjs/index.js +1 -0
  102. package/dist/mjs/index.js.map +1 -0
  103. package/dist/mjs/interfaces/binary-tree.js +1 -0
  104. package/dist/mjs/interfaces/binary-tree.js.map +1 -0
  105. package/dist/mjs/interfaces/doubly-linked-list.js +1 -0
  106. package/dist/mjs/interfaces/doubly-linked-list.js.map +1 -0
  107. package/dist/mjs/interfaces/graph.js +1 -0
  108. package/dist/mjs/interfaces/graph.js.map +1 -0
  109. package/dist/mjs/interfaces/heap.js +1 -0
  110. package/dist/mjs/interfaces/heap.js.map +1 -0
  111. package/dist/mjs/interfaces/index.js +1 -0
  112. package/dist/mjs/interfaces/index.js.map +1 -0
  113. package/dist/mjs/interfaces/navigator.js +1 -0
  114. package/dist/mjs/interfaces/navigator.js.map +1 -0
  115. package/dist/mjs/interfaces/priority-queue.js +1 -0
  116. package/dist/mjs/interfaces/priority-queue.js.map +1 -0
  117. package/dist/mjs/interfaces/segment-tree.js +1 -0
  118. package/dist/mjs/interfaces/segment-tree.js.map +1 -0
  119. package/dist/mjs/interfaces/singly-linked-list.js +1 -0
  120. package/dist/mjs/interfaces/singly-linked-list.js.map +1 -0
  121. package/dist/mjs/types/common.js +1 -0
  122. package/dist/mjs/types/common.js.map +1 -0
  123. package/dist/mjs/types/data-structures/base/base.js +1 -0
  124. package/dist/mjs/types/data-structures/base/base.js.map +1 -0
  125. package/dist/mjs/types/data-structures/base/index.js +1 -0
  126. package/dist/mjs/types/data-structures/base/index.js.map +1 -0
  127. package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.js +1 -0
  128. package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -0
  129. package/dist/mjs/types/data-structures/binary-tree/avl-tree.js +1 -0
  130. package/dist/mjs/types/data-structures/binary-tree/avl-tree.js.map +1 -0
  131. package/dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.js +1 -0
  132. package/dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  133. package/dist/mjs/types/data-structures/binary-tree/binary-tree.js +1 -0
  134. package/dist/mjs/types/data-structures/binary-tree/binary-tree.js.map +1 -0
  135. package/dist/mjs/types/data-structures/binary-tree/bst.js +1 -0
  136. package/dist/mjs/types/data-structures/binary-tree/bst.js.map +1 -0
  137. package/dist/mjs/types/data-structures/binary-tree/index.js +1 -0
  138. package/dist/mjs/types/data-structures/binary-tree/index.js.map +1 -0
  139. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +1 -0
  140. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js.map +1 -0
  141. package/dist/mjs/types/data-structures/binary-tree/segment-tree.js +1 -0
  142. package/dist/mjs/types/data-structures/binary-tree/segment-tree.js.map +1 -0
  143. package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.js +1 -0
  144. package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.js.map +1 -0
  145. package/dist/mjs/types/data-structures/graph/abstract-graph.js +1 -0
  146. package/dist/mjs/types/data-structures/graph/abstract-graph.js.map +1 -0
  147. package/dist/mjs/types/data-structures/graph/directed-graph.js +1 -0
  148. package/dist/mjs/types/data-structures/graph/directed-graph.js.map +1 -0
  149. package/dist/mjs/types/data-structures/graph/index.js +1 -0
  150. package/dist/mjs/types/data-structures/graph/index.js.map +1 -0
  151. package/dist/mjs/types/data-structures/graph/map-graph.js +1 -0
  152. package/dist/mjs/types/data-structures/graph/map-graph.js.map +1 -0
  153. package/dist/mjs/types/data-structures/graph/undirected-graph.js +1 -0
  154. package/dist/mjs/types/data-structures/graph/undirected-graph.js.map +1 -0
  155. package/dist/mjs/types/data-structures/hash/hash-map.js +1 -0
  156. package/dist/mjs/types/data-structures/hash/hash-map.js.map +1 -0
  157. package/dist/mjs/types/data-structures/hash/index.js +1 -0
  158. package/dist/mjs/types/data-structures/hash/index.js.map +1 -0
  159. package/dist/mjs/types/data-structures/heap/heap.js +1 -0
  160. package/dist/mjs/types/data-structures/heap/heap.js.map +1 -0
  161. package/dist/mjs/types/data-structures/heap/index.js +1 -0
  162. package/dist/mjs/types/data-structures/heap/index.js.map +1 -0
  163. package/dist/mjs/types/data-structures/heap/max-heap.js +1 -0
  164. package/dist/mjs/types/data-structures/heap/max-heap.js.map +1 -0
  165. package/dist/mjs/types/data-structures/heap/min-heap.js +1 -0
  166. package/dist/mjs/types/data-structures/heap/min-heap.js.map +1 -0
  167. package/dist/mjs/types/data-structures/index.js +1 -0
  168. package/dist/mjs/types/data-structures/index.js.map +1 -0
  169. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js +1 -0
  170. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  171. package/dist/mjs/types/data-structures/linked-list/index.js +1 -0
  172. package/dist/mjs/types/data-structures/linked-list/index.js.map +1 -0
  173. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js +1 -0
  174. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js.map +1 -0
  175. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js +1 -0
  176. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js.map +1 -0
  177. package/dist/mjs/types/data-structures/matrix/index.js +1 -0
  178. package/dist/mjs/types/data-structures/matrix/index.js.map +1 -0
  179. package/dist/mjs/types/data-structures/matrix/matrix.js +1 -0
  180. package/dist/mjs/types/data-structures/matrix/matrix.js.map +1 -0
  181. package/dist/mjs/types/data-structures/matrix/navigator.js +1 -0
  182. package/dist/mjs/types/data-structures/matrix/navigator.js.map +1 -0
  183. package/dist/mjs/types/data-structures/priority-queue/index.js +1 -0
  184. package/dist/mjs/types/data-structures/priority-queue/index.js.map +1 -0
  185. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js +1 -0
  186. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  187. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js +1 -0
  188. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  189. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js +1 -0
  190. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js.map +1 -0
  191. package/dist/mjs/types/data-structures/queue/deque.js +1 -0
  192. package/dist/mjs/types/data-structures/queue/deque.js.map +1 -0
  193. package/dist/mjs/types/data-structures/queue/index.js +1 -0
  194. package/dist/mjs/types/data-structures/queue/index.js.map +1 -0
  195. package/dist/mjs/types/data-structures/queue/queue.js +1 -0
  196. package/dist/mjs/types/data-structures/queue/queue.js.map +1 -0
  197. package/dist/mjs/types/data-structures/stack/index.js +1 -0
  198. package/dist/mjs/types/data-structures/stack/index.js.map +1 -0
  199. package/dist/mjs/types/data-structures/stack/stack.js +1 -0
  200. package/dist/mjs/types/data-structures/stack/stack.js.map +1 -0
  201. package/dist/mjs/types/data-structures/tree/index.js +1 -0
  202. package/dist/mjs/types/data-structures/tree/index.js.map +1 -0
  203. package/dist/mjs/types/data-structures/tree/tree.js +1 -0
  204. package/dist/mjs/types/data-structures/tree/tree.js.map +1 -0
  205. package/dist/mjs/types/data-structures/trie/index.js +1 -0
  206. package/dist/mjs/types/data-structures/trie/index.js.map +1 -0
  207. package/dist/mjs/types/data-structures/trie/trie.js +1 -0
  208. package/dist/mjs/types/data-structures/trie/trie.js.map +1 -0
  209. package/dist/mjs/types/index.js +1 -0
  210. package/dist/mjs/types/index.js.map +1 -0
  211. package/dist/mjs/types/utils/index.js +1 -0
  212. package/dist/mjs/types/utils/index.js.map +1 -0
  213. package/dist/mjs/types/utils/utils.js +1 -0
  214. package/dist/mjs/types/utils/utils.js.map +1 -0
  215. package/dist/mjs/types/utils/validate-type.js +1 -0
  216. package/dist/mjs/types/utils/validate-type.js.map +1 -0
  217. package/dist/mjs/utils/index.js +1 -0
  218. package/dist/mjs/utils/index.js.map +1 -0
  219. package/dist/mjs/utils/number.js +1 -0
  220. package/dist/mjs/utils/number.js.map +1 -0
  221. package/dist/mjs/utils/utils.js +1 -0
  222. package/dist/mjs/utils/utils.js.map +1 -0
  223. package/dist/umd/data-structure-typed.js +2 -2
  224. package/dist/umd/data-structure-typed.min.js +1 -1
  225. package/dist/umd/data-structure-typed.min.js.map +1 -1
  226. package/package.json +13 -11
  227. package/src/data-structures/heap/heap.ts +165 -0
  228. package/src/data-structures/linked-list/doubly-linked-list.ts +428 -2
  229. package/test/unit/data-structures/graph/directed-graph.test.ts +14 -0
  230. package/test/unit/data-structures/heap/heap.test.ts +173 -0
  231. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +434 -0
  232. package/test/utils/array.ts +1 -1
  233. package/test/utils/string.ts +49 -1
  234. package/testToExample.ts +215 -0
  235. package/tsconfig-mjs.json +1 -1
package/CHANGELOG.md CHANGED
@@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
8
8
  - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  - [`auto-changelog`](https://github.com/CookPete/auto-changelog)
10
10
 
11
- ## [v1.53.1](https://github.com/zrwusa/data-structure-typed/compare/v1.51.5...main) (upcoming)
11
+ ## [v1.53.3](https://github.com/zrwusa/data-structure-typed/compare/v1.51.5...main) (upcoming)
12
12
 
13
13
  ### Changes
14
14
 
package/README.md CHANGED
@@ -798,6 +798,12 @@ Array.from(dijkstraResult?.seen ?? []).map(vertex => vertex.key) // ['A', 'B', '
798
798
 
799
799
  ```
800
800
 
801
+
802
+ [//]: # (No deletion!!! Start of Example Replace Section)
803
+
804
+
805
+ [//]: # (No deletion!!! End of Example Replace Section)
806
+
801
807
  ## API docs & Examples
802
808
 
803
809
  [API Docs](https://data-structure-typed-docs.vercel.app)
@@ -17,6 +17,171 @@ import { IterableElementBase } from '../base';
17
17
  * 6. Non-linear Search: While a heap allows rapid access to its largest or smallest element, it is less efficient for other operations, such as searching for a specific element, as it is not designed for these tasks.
18
18
  * 7. Efficient Sorting Algorithms: For example, heap sort. Heap sort uses the properties of a heap to sort elements.
19
19
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prime's minimum-spanning tree algorithm, which use heaps to improve performance.
20
+ * @example
21
+ * // Use Heap to sort an array
22
+ * function heapSort(arr: number[]): number[] {
23
+ * const heap = new Heap<number>(arr, { comparator: (a, b) => a - b });
24
+ * const sorted: number[] = [];
25
+ * while (!heap.isEmpty()) {
26
+ * sorted.push(heap.poll()!); // Poll minimum element
27
+ * }
28
+ * return sorted;
29
+ * }
30
+ *
31
+ * const array = [5, 3, 8, 4, 1, 2];
32
+ * console.log(heapSort(array)); // [1, 2, 3, 4, 5, 8]
33
+ * @example
34
+ * // Use Heap to solve top k problems
35
+ * function topKElements(arr: number[], k: number): number[] {
36
+ * const heap = new Heap<number>([], { comparator: (a, b) => b - a }); // Max heap
37
+ * arr.forEach(num => {
38
+ * heap.add(num);
39
+ * if (heap.size > k) heap.poll(); // Keep the heap size at K
40
+ * });
41
+ * return heap.toArray();
42
+ * }
43
+ *
44
+ * const numbers = [10, 30, 20, 5, 15, 25];
45
+ * console.log(topKElements(numbers, 3)); // [15, 10, 5]
46
+ * @example
47
+ * // Use Heap to merge sorted sequences
48
+ * function mergeSortedSequences(sequences: number[][]): number[] {
49
+ * const heap = new Heap<{ value: number; seqIndex: number; itemIndex: number }>([], {
50
+ * comparator: (a, b) => a.value - b.value // Min heap
51
+ * });
52
+ *
53
+ * // Initialize heap
54
+ * sequences.forEach((seq, seqIndex) => {
55
+ * if (seq.length) {
56
+ * heap.add({ value: seq[0], seqIndex, itemIndex: 0 });
57
+ * }
58
+ * });
59
+ *
60
+ * const merged: number[] = [];
61
+ * while (!heap.isEmpty()) {
62
+ * const { value, seqIndex, itemIndex } = heap.poll()!;
63
+ * merged.push(value);
64
+ *
65
+ * if (itemIndex + 1 < sequences[seqIndex].length) {
66
+ * heap.add({
67
+ * value: sequences[seqIndex][itemIndex + 1],
68
+ * seqIndex,
69
+ * itemIndex: itemIndex + 1
70
+ * });
71
+ * }
72
+ * }
73
+ *
74
+ * return merged;
75
+ * }
76
+ *
77
+ * const sequences = [
78
+ * [1, 4, 7],
79
+ * [2, 5, 8],
80
+ * [3, 6, 9]
81
+ * ];
82
+ * console.log(mergeSortedSequences(sequences)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
83
+ * @example
84
+ * // Use Heap to dynamically maintain the median
85
+ * class MedianFinder {
86
+ * private low: MaxHeap<number>; // Max heap, stores the smaller half
87
+ * private high: MinHeap<number>; // Min heap, stores the larger half
88
+ *
89
+ * constructor() {
90
+ * this.low = new MaxHeap<number>([]);
91
+ * this.high = new MinHeap<number>([]);
92
+ * }
93
+ *
94
+ * addNum(num: number): void {
95
+ * if (this.low.isEmpty() || num <= this.low.peek()!) this.low.add(num);
96
+ * else this.high.add(num);
97
+ *
98
+ * // Balance heaps
99
+ * if (this.low.size > this.high.size + 1) this.high.add(this.low.poll()!);
100
+ * else if (this.high.size > this.low.size) this.low.add(this.high.poll()!);
101
+ * }
102
+ *
103
+ * findMedian(): number {
104
+ * if (this.low.size === this.high.size) return (this.low.peek()! + this.high.peek()!) / 2;
105
+ * return this.low.peek()!;
106
+ * }
107
+ * }
108
+ *
109
+ * const medianFinder = new MedianFinder();
110
+ * medianFinder.addNum(10);
111
+ * console.log(medianFinder.findMedian()); // 10
112
+ * medianFinder.addNum(20);
113
+ * console.log(medianFinder.findMedian()); // 15
114
+ * medianFinder.addNum(30);
115
+ * console.log(medianFinder.findMedian()); // 20
116
+ * medianFinder.addNum(40);
117
+ * console.log(medianFinder.findMedian()); // 25
118
+ * medianFinder.addNum(50);
119
+ * console.log(medianFinder.findMedian()); // 30
120
+ * @example
121
+ * // Use Heap for load balancing
122
+ * function loadBalance(requests: number[], servers: number): number[] {
123
+ * const serverHeap = new Heap<{ id: number; load: number }>([], { comparator: (a, b) => a.load - b.load }); // min heap
124
+ * const serverLoads = new Array(servers).fill(0);
125
+ *
126
+ * for (let i = 0; i < servers; i++) {
127
+ * serverHeap.add({ id: i, load: 0 });
128
+ * }
129
+ *
130
+ * requests.forEach(req => {
131
+ * const server = serverHeap.poll()!;
132
+ * serverLoads[server.id] += req;
133
+ * server.load += req;
134
+ * serverHeap.add(server); // The server after updating the load is re-entered into the heap
135
+ * });
136
+ *
137
+ * return serverLoads;
138
+ * }
139
+ *
140
+ * const requests = [5, 2, 8, 3, 7];
141
+ * console.log(loadBalance(requests, 3)); // [12, 8, 5]
142
+ * @example
143
+ * // Use Heap to schedule tasks
144
+ * type Task = [string, number];
145
+ *
146
+ * function scheduleTasks(tasks: Task[], machines: number): Map<number, Task[]> {
147
+ * const machineHeap = new Heap<{ id: number; load: number }>([], { comparator: (a, b) => a.load - b.load }); // Min heap
148
+ * const allocation = new Map<number, Task[]>();
149
+ *
150
+ * // Initialize the load on each machine
151
+ * for (let i = 0; i < machines; i++) {
152
+ * machineHeap.add({ id: i, load: 0 });
153
+ * allocation.set(i, []);
154
+ * }
155
+ *
156
+ * // Assign tasks
157
+ * tasks.forEach(([task, load]) => {
158
+ * const machine = machineHeap.poll()!;
159
+ * allocation.get(machine.id)!.push([task, load]);
160
+ * machine.load += load;
161
+ * machineHeap.add(machine); // The machine after updating the load is re-entered into the heap
162
+ * });
163
+ *
164
+ * return allocation;
165
+ * }
166
+ *
167
+ * const tasks: Task[] = [
168
+ * ['Task1', 3],
169
+ * ['Task2', 1],
170
+ * ['Task3', 2],
171
+ * ['Task4', 5],
172
+ * ['Task5', 4]
173
+ * ];
174
+ * const expectedMap = new Map<number, Task[]>();
175
+ * expectedMap.set(0, [
176
+ * ['Task1', 3],
177
+ * ['Task4', 5]
178
+ * ]);
179
+ * expectedMap.set(1, [
180
+ * ['Task2', 1],
181
+ * ['Task3', 2],
182
+ * ['Task5', 4]
183
+ * ]);
184
+ * console.log(scheduleTasks(tasks, 2)); // expectedMap
20
185
  */
21
186
  export declare class Heap<E = any, R = any> extends IterableElementBase<E, R, Heap<E, R>> {
22
187
  /**
@@ -19,6 +19,171 @@ const base_1 = require("../base");
19
19
  * 6. Non-linear Search: While a heap allows rapid access to its largest or smallest element, it is less efficient for other operations, such as searching for a specific element, as it is not designed for these tasks.
20
20
  * 7. Efficient Sorting Algorithms: For example, heap sort. Heap sort uses the properties of a heap to sort elements.
21
21
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prime's minimum-spanning tree algorithm, which use heaps to improve performance.
22
+ * @example
23
+ * // Use Heap to sort an array
24
+ * function heapSort(arr: number[]): number[] {
25
+ * const heap = new Heap<number>(arr, { comparator: (a, b) => a - b });
26
+ * const sorted: number[] = [];
27
+ * while (!heap.isEmpty()) {
28
+ * sorted.push(heap.poll()!); // Poll minimum element
29
+ * }
30
+ * return sorted;
31
+ * }
32
+ *
33
+ * const array = [5, 3, 8, 4, 1, 2];
34
+ * console.log(heapSort(array)); // [1, 2, 3, 4, 5, 8]
35
+ * @example
36
+ * // Use Heap to solve top k problems
37
+ * function topKElements(arr: number[], k: number): number[] {
38
+ * const heap = new Heap<number>([], { comparator: (a, b) => b - a }); // Max heap
39
+ * arr.forEach(num => {
40
+ * heap.add(num);
41
+ * if (heap.size > k) heap.poll(); // Keep the heap size at K
42
+ * });
43
+ * return heap.toArray();
44
+ * }
45
+ *
46
+ * const numbers = [10, 30, 20, 5, 15, 25];
47
+ * console.log(topKElements(numbers, 3)); // [15, 10, 5]
48
+ * @example
49
+ * // Use Heap to merge sorted sequences
50
+ * function mergeSortedSequences(sequences: number[][]): number[] {
51
+ * const heap = new Heap<{ value: number; seqIndex: number; itemIndex: number }>([], {
52
+ * comparator: (a, b) => a.value - b.value // Min heap
53
+ * });
54
+ *
55
+ * // Initialize heap
56
+ * sequences.forEach((seq, seqIndex) => {
57
+ * if (seq.length) {
58
+ * heap.add({ value: seq[0], seqIndex, itemIndex: 0 });
59
+ * }
60
+ * });
61
+ *
62
+ * const merged: number[] = [];
63
+ * while (!heap.isEmpty()) {
64
+ * const { value, seqIndex, itemIndex } = heap.poll()!;
65
+ * merged.push(value);
66
+ *
67
+ * if (itemIndex + 1 < sequences[seqIndex].length) {
68
+ * heap.add({
69
+ * value: sequences[seqIndex][itemIndex + 1],
70
+ * seqIndex,
71
+ * itemIndex: itemIndex + 1
72
+ * });
73
+ * }
74
+ * }
75
+ *
76
+ * return merged;
77
+ * }
78
+ *
79
+ * const sequences = [
80
+ * [1, 4, 7],
81
+ * [2, 5, 8],
82
+ * [3, 6, 9]
83
+ * ];
84
+ * console.log(mergeSortedSequences(sequences)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
85
+ * @example
86
+ * // Use Heap to dynamically maintain the median
87
+ * class MedianFinder {
88
+ * private low: MaxHeap<number>; // Max heap, stores the smaller half
89
+ * private high: MinHeap<number>; // Min heap, stores the larger half
90
+ *
91
+ * constructor() {
92
+ * this.low = new MaxHeap<number>([]);
93
+ * this.high = new MinHeap<number>([]);
94
+ * }
95
+ *
96
+ * addNum(num: number): void {
97
+ * if (this.low.isEmpty() || num <= this.low.peek()!) this.low.add(num);
98
+ * else this.high.add(num);
99
+ *
100
+ * // Balance heaps
101
+ * if (this.low.size > this.high.size + 1) this.high.add(this.low.poll()!);
102
+ * else if (this.high.size > this.low.size) this.low.add(this.high.poll()!);
103
+ * }
104
+ *
105
+ * findMedian(): number {
106
+ * if (this.low.size === this.high.size) return (this.low.peek()! + this.high.peek()!) / 2;
107
+ * return this.low.peek()!;
108
+ * }
109
+ * }
110
+ *
111
+ * const medianFinder = new MedianFinder();
112
+ * medianFinder.addNum(10);
113
+ * console.log(medianFinder.findMedian()); // 10
114
+ * medianFinder.addNum(20);
115
+ * console.log(medianFinder.findMedian()); // 15
116
+ * medianFinder.addNum(30);
117
+ * console.log(medianFinder.findMedian()); // 20
118
+ * medianFinder.addNum(40);
119
+ * console.log(medianFinder.findMedian()); // 25
120
+ * medianFinder.addNum(50);
121
+ * console.log(medianFinder.findMedian()); // 30
122
+ * @example
123
+ * // Use Heap for load balancing
124
+ * function loadBalance(requests: number[], servers: number): number[] {
125
+ * const serverHeap = new Heap<{ id: number; load: number }>([], { comparator: (a, b) => a.load - b.load }); // min heap
126
+ * const serverLoads = new Array(servers).fill(0);
127
+ *
128
+ * for (let i = 0; i < servers; i++) {
129
+ * serverHeap.add({ id: i, load: 0 });
130
+ * }
131
+ *
132
+ * requests.forEach(req => {
133
+ * const server = serverHeap.poll()!;
134
+ * serverLoads[server.id] += req;
135
+ * server.load += req;
136
+ * serverHeap.add(server); // The server after updating the load is re-entered into the heap
137
+ * });
138
+ *
139
+ * return serverLoads;
140
+ * }
141
+ *
142
+ * const requests = [5, 2, 8, 3, 7];
143
+ * console.log(loadBalance(requests, 3)); // [12, 8, 5]
144
+ * @example
145
+ * // Use Heap to schedule tasks
146
+ * type Task = [string, number];
147
+ *
148
+ * function scheduleTasks(tasks: Task[], machines: number): Map<number, Task[]> {
149
+ * const machineHeap = new Heap<{ id: number; load: number }>([], { comparator: (a, b) => a.load - b.load }); // Min heap
150
+ * const allocation = new Map<number, Task[]>();
151
+ *
152
+ * // Initialize the load on each machine
153
+ * for (let i = 0; i < machines; i++) {
154
+ * machineHeap.add({ id: i, load: 0 });
155
+ * allocation.set(i, []);
156
+ * }
157
+ *
158
+ * // Assign tasks
159
+ * tasks.forEach(([task, load]) => {
160
+ * const machine = machineHeap.poll()!;
161
+ * allocation.get(machine.id)!.push([task, load]);
162
+ * machine.load += load;
163
+ * machineHeap.add(machine); // The machine after updating the load is re-entered into the heap
164
+ * });
165
+ *
166
+ * return allocation;
167
+ * }
168
+ *
169
+ * const tasks: Task[] = [
170
+ * ['Task1', 3],
171
+ * ['Task2', 1],
172
+ * ['Task3', 2],
173
+ * ['Task4', 5],
174
+ * ['Task5', 4]
175
+ * ];
176
+ * const expectedMap = new Map<number, Task[]>();
177
+ * expectedMap.set(0, [
178
+ * ['Task1', 3],
179
+ * ['Task4', 5]
180
+ * ]);
181
+ * expectedMap.set(1, [
182
+ * ['Task2', 1],
183
+ * ['Task3', 2],
184
+ * ['Task5', 4]
185
+ * ]);
186
+ * console.log(scheduleTasks(tasks, 2)); // expectedMap
22
187
  */
23
188
  class Heap extends base_1.IterableElementBase {
24
189
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}