diff --git a/solution/0600-0699/0630.Course Schedule III/README.md b/solution/0600-0699/0630.Course Schedule III/README.md index 6375a17781381..0892c7c3ea024 100644 --- a/solution/0600-0699/0630.Course Schedule III/README.md +++ b/solution/0600-0699/0630.Course Schedule III/README.md @@ -179,13 +179,13 @@ func (h *hp) pop() int { return heap.Pop(h).(int) } ```ts function scheduleCourse(courses: number[][]): number { courses.sort((a, b) => a[1] - b[1]); - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); let s = 0; for (const [duration, last] of courses) { pq.enqueue(duration); s += duration; while (s > last) { - s -= pq.dequeue().element; + s -= pq.dequeue(); } } return pq.size(); diff --git a/solution/0600-0699/0630.Course Schedule III/README_EN.md b/solution/0600-0699/0630.Course Schedule III/README_EN.md index 635e4695af275..c62bec88ced90 100644 --- a/solution/0600-0699/0630.Course Schedule III/README_EN.md +++ b/solution/0600-0699/0630.Course Schedule III/README_EN.md @@ -170,13 +170,13 @@ func (h *hp) pop() int { return heap.Pop(h).(int) } ```ts function scheduleCourse(courses: number[][]): number { courses.sort((a, b) => a[1] - b[1]); - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); let s = 0; for (const [duration, last] of courses) { pq.enqueue(duration); s += duration; while (s > last) { - s -= pq.dequeue().element; + s -= pq.dequeue(); } } return pq.size(); diff --git a/solution/0600-0699/0630.Course Schedule III/Solution.ts b/solution/0600-0699/0630.Course Schedule III/Solution.ts index cf53fa353f7fb..fa2048b5b649b 100644 --- a/solution/0600-0699/0630.Course Schedule III/Solution.ts +++ b/solution/0600-0699/0630.Course Schedule III/Solution.ts @@ -1,12 +1,12 @@ function scheduleCourse(courses: number[][]): number { courses.sort((a, b) => a[1] - b[1]); - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); let s = 0; for (const [duration, last] of courses) { pq.enqueue(duration); s += duration; while (s > last) { - s -= pq.dequeue().element; + s -= pq.dequeue(); } } return pq.size(); diff --git a/solution/0900-0999/0973.K Closest Points to Origin/README.md b/solution/0900-0999/0973.K Closest Points to Origin/README.md index c2619b2a8acc1..b11686cc6a7ac 100644 --- a/solution/0900-0999/0973.K Closest Points to Origin/README.md +++ b/solution/0900-0999/0973.K Closest Points to Origin/README.md @@ -259,15 +259,15 @@ func (h *hp) Pop() any { a := *h; v := a[len(a)-1]; *h = a[:len(a)-1]; retur ```ts function kClosest(points: number[][], k: number): number[][] { - const maxQ = new MaxPriorityQueue(); + const maxQ = new MaxPriorityQueue<{ point: number[]; dist: number }>(entry => entry.dist); for (const [x, y] of points) { const dist = x * x + y * y; - maxQ.enqueue([x, y], dist); + maxQ.enqueue({ point: [x, y], dist }); if (maxQ.size() > k) { maxQ.dequeue(); } } - return maxQ.toArray().map(item => item.element); + return maxQ.toArray().map(entry => entry.point); } ``` diff --git a/solution/0900-0999/0973.K Closest Points to Origin/README_EN.md b/solution/0900-0999/0973.K Closest Points to Origin/README_EN.md index 5a6704413aee5..2335041d3f46c 100644 --- a/solution/0900-0999/0973.K Closest Points to Origin/README_EN.md +++ b/solution/0900-0999/0973.K Closest Points to Origin/README_EN.md @@ -255,15 +255,15 @@ func (h *hp) Pop() any { a := *h; v := a[len(a)-1]; *h = a[:len(a)-1]; retur ```ts function kClosest(points: number[][], k: number): number[][] { - const maxQ = new MaxPriorityQueue(); + const maxQ = new MaxPriorityQueue<{ point: number[]; dist: number }>(entry => entry.dist); for (const [x, y] of points) { const dist = x * x + y * y; - maxQ.enqueue([x, y], dist); + maxQ.enqueue({ point: [x, y], dist }); if (maxQ.size() > k) { maxQ.dequeue(); } } - return maxQ.toArray().map(item => item.element); + return maxQ.toArray().map(entry => entry.point); } ``` diff --git a/solution/0900-0999/0973.K Closest Points to Origin/Solution2.ts b/solution/0900-0999/0973.K Closest Points to Origin/Solution2.ts index afeb1c9d648f6..9c7b62a6e4027 100644 --- a/solution/0900-0999/0973.K Closest Points to Origin/Solution2.ts +++ b/solution/0900-0999/0973.K Closest Points to Origin/Solution2.ts @@ -1,11 +1,11 @@ function kClosest(points: number[][], k: number): number[][] { - const maxQ = new MaxPriorityQueue(); + const maxQ = new MaxPriorityQueue<{ point: number[]; dist: number }>(entry => entry.dist); for (const [x, y] of points) { const dist = x * x + y * y; - maxQ.enqueue([x, y], dist); + maxQ.enqueue({ point: [x, y], dist }); if (maxQ.size() > k) { maxQ.dequeue(); } } - return maxQ.toArray().map(item => item.element); + return maxQ.toArray().map(entry => entry.point); } diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README.md b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README.md index 2066a078751e3..0b2e18dccc984 100644 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README.md +++ b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README.md @@ -348,193 +348,151 @@ public: ```go type Trie struct { children map[string]*Trie - isEnd bool + fid int } func newTrie() *Trie { - m := map[string]*Trie{} - return &Trie{children: m} + return &Trie{map[string]*Trie{}, -1} } -func (this *Trie) insert(w string) { +func (this *Trie) insert(fid int, f string) { node := this - for _, p := range strings.Split(w, "/")[1:] { + ps := strings.Split(f, "/") + for _, p := range ps[1:] { if _, ok := node.children[p]; !ok { node.children[p] = newTrie() } - node, _ = node.children[p] + node = node.children[p] } - node.isEnd = true + node.fid = fid } -func (this *Trie) search(w string) bool { - node := this - for _, p := range strings.Split(w, "/")[1:] { - if _, ok := node.children[p]; !ok { - return false +func (this *Trie) search() (ans []int) { + var dfs func(*Trie) + dfs = func(root *Trie) { + if root.fid != -1 { + ans = append(ans, root.fid) + return } - node, _ = node.children[p] - if node.isEnd { - return true + for _, child := range root.children { + dfs(child) } } - return false + dfs(this) + return } -func removeSubfolders(folder []string) []string { - sort.Slice(folder, func(i, j int) bool { - return len(strings.Split(folder[i], "/")) < len(strings.Split(folder[j], "/")) - }) +func removeSubfolders(folder []string) (ans []string) { trie := newTrie() - var ans []string - for _, v := range folder { - if !trie.search(v) { - trie.insert(v) - ans = append(ans, v) - } + for i, f := range folder { + trie.insert(i, f) } - return ans + for _, i := range trie.search() { + ans = append(ans, folder[i]) + } + return } ``` #### TypeScript ```ts -function removeSubfolders(folder: string[]): string[] { - const createTrie = (): T => ({ '#': false, children: {} }); - const trie = createTrie(); +class Trie { + children: Record; + fid: number; - for (const f of folder) { - const path = f.split('/'); - path.shift(); + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i: number, f: string): void { + let node: Trie = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans: string[] = []; - const dfs = (trie: T, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; + search(): number[] { + const ans: number[] = []; + const dfs = (root: Trie): void => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } -type T = { - '#': boolean; - children: Record; -}; +function removeSubfolders(folder: string[]): string[] { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +} ``` #### JavaScript ```js -function removeSubfolders(folder) { - const createTrie = () => ({ '#': false, children: {} }); - const trie = createTrie(); - - for (const f of folder) { - const path = f.split('/'); - path.shift(); +class Trie { + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i, f) { + let node = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans = []; - const dfs = (trie, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; -} -``` - - - - - - - -### 方法三 - - - -#### Go - -```go -type Trie struct { - children map[string]*Trie - fid int -} - -func newTrie() *Trie { - return &Trie{map[string]*Trie{}, -1} -} - -func (this *Trie) insert(fid int, f string) { - node := this - ps := strings.Split(f, "/") - for _, p := range ps[1:] { - if _, ok := node.children[p]; !ok { - node.children[p] = newTrie() - } - node = node.children[p] - } - node.fid = fid -} - -func (this *Trie) search() (ans []int) { - var dfs func(*Trie) - dfs = func(root *Trie) { - if root.fid != -1 { - ans = append(ans, root.fid) - return - } - for _, child := range root.children { - dfs(child) - } - } - dfs(this) - return + search() { + const ans = []; + const dfs = root => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } -func removeSubfolders(folder []string) (ans []string) { - trie := newTrie() - for i, f := range folder { - trie.insert(i, f) - } - for _, i := range trie.search() { - ans = append(ans, folder[i]) - } - return -} +/** + * @param {string[]} folder + * @return {string[]} + */ +var removeSubfolders = function (folder) { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +}; ``` diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README_EN.md b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README_EN.md index 6d9859eca427f..d4a4790b79abc 100644 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README_EN.md +++ b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/README_EN.md @@ -347,193 +347,151 @@ public: ```go type Trie struct { children map[string]*Trie - isEnd bool + fid int } func newTrie() *Trie { - m := map[string]*Trie{} - return &Trie{children: m} + return &Trie{map[string]*Trie{}, -1} } -func (this *Trie) insert(w string) { +func (this *Trie) insert(fid int, f string) { node := this - for _, p := range strings.Split(w, "/")[1:] { + ps := strings.Split(f, "/") + for _, p := range ps[1:] { if _, ok := node.children[p]; !ok { node.children[p] = newTrie() } - node, _ = node.children[p] + node = node.children[p] } - node.isEnd = true + node.fid = fid } -func (this *Trie) search(w string) bool { - node := this - for _, p := range strings.Split(w, "/")[1:] { - if _, ok := node.children[p]; !ok { - return false +func (this *Trie) search() (ans []int) { + var dfs func(*Trie) + dfs = func(root *Trie) { + if root.fid != -1 { + ans = append(ans, root.fid) + return } - node, _ = node.children[p] - if node.isEnd { - return true + for _, child := range root.children { + dfs(child) } } - return false + dfs(this) + return } -func removeSubfolders(folder []string) []string { - sort.Slice(folder, func(i, j int) bool { - return len(strings.Split(folder[i], "/")) < len(strings.Split(folder[j], "/")) - }) +func removeSubfolders(folder []string) (ans []string) { trie := newTrie() - var ans []string - for _, v := range folder { - if !trie.search(v) { - trie.insert(v) - ans = append(ans, v) - } + for i, f := range folder { + trie.insert(i, f) } - return ans + for _, i := range trie.search() { + ans = append(ans, folder[i]) + } + return } ``` #### TypeScript ```ts -function removeSubfolders(folder: string[]): string[] { - const createTrie = (): T => ({ '#': false, children: {} }); - const trie = createTrie(); +class Trie { + children: Record; + fid: number; - for (const f of folder) { - const path = f.split('/'); - path.shift(); + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i: number, f: string): void { + let node: Trie = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans: string[] = []; - const dfs = (trie: T, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; + search(): number[] { + const ans: number[] = []; + const dfs = (root: Trie): void => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } -type T = { - '#': boolean; - children: Record; -}; +function removeSubfolders(folder: string[]): string[] { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +} ``` #### JavaScript ```js -function removeSubfolders(folder) { - const createTrie = () => ({ '#': false, children: {} }); - const trie = createTrie(); - - for (const f of folder) { - const path = f.split('/'); - path.shift(); +class Trie { + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i, f) { + let node = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans = []; - const dfs = (trie, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; -} -``` - - - - - - - -### Solution 3 - - - -#### Go - -```go -type Trie struct { - children map[string]*Trie - fid int -} - -func newTrie() *Trie { - return &Trie{map[string]*Trie{}, -1} -} - -func (this *Trie) insert(fid int, f string) { - node := this - ps := strings.Split(f, "/") - for _, p := range ps[1:] { - if _, ok := node.children[p]; !ok { - node.children[p] = newTrie() - } - node = node.children[p] - } - node.fid = fid -} - -func (this *Trie) search() (ans []int) { - var dfs func(*Trie) - dfs = func(root *Trie) { - if root.fid != -1 { - ans = append(ans, root.fid) - return - } - for _, child := range root.children { - dfs(child) - } - } - dfs(this) - return + search() { + const ans = []; + const dfs = root => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } -func removeSubfolders(folder []string) (ans []string) { - trie := newTrie() - for i, f := range folder { - trie.insert(i, f) - } - for _, i := range trie.search() { - ans = append(ans, folder[i]) - } - return -} +/** + * @param {string[]} folder + * @return {string[]} + */ +var removeSubfolders = function (folder) { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +}; ``` diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.go b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.go index 5f0a8f90351af..9a5f248168d9d 100644 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.go +++ b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.go @@ -1,49 +1,46 @@ type Trie struct { children map[string]*Trie - isEnd bool + fid int } func newTrie() *Trie { - m := map[string]*Trie{} - return &Trie{children: m} + return &Trie{map[string]*Trie{}, -1} } -func (this *Trie) insert(w string) { +func (this *Trie) insert(fid int, f string) { node := this - for _, p := range strings.Split(w, "/")[1:] { + ps := strings.Split(f, "/") + for _, p := range ps[1:] { if _, ok := node.children[p]; !ok { node.children[p] = newTrie() } - node, _ = node.children[p] + node = node.children[p] } - node.isEnd = true + node.fid = fid } -func (this *Trie) search(w string) bool { - node := this - for _, p := range strings.Split(w, "/")[1:] { - if _, ok := node.children[p]; !ok { - return false +func (this *Trie) search() (ans []int) { + var dfs func(*Trie) + dfs = func(root *Trie) { + if root.fid != -1 { + ans = append(ans, root.fid) + return } - node, _ = node.children[p] - if node.isEnd { - return true + for _, child := range root.children { + dfs(child) } } - return false + dfs(this) + return } -func removeSubfolders(folder []string) []string { - sort.Slice(folder, func(i, j int) bool { - return len(strings.Split(folder[i], "/")) < len(strings.Split(folder[j], "/")) - }) +func removeSubfolders(folder []string) (ans []string) { trie := newTrie() - var ans []string - for _, v := range folder { - if !trie.search(v) { - trie.insert(v) - ans = append(ans, v) - } + for i, f := range folder { + trie.insert(i, f) + } + for _, i := range trie.search() { + ans = append(ans, folder[i]) } - return ans + return } \ No newline at end of file diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.js b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.js index 2c3e9e4bfca6e..4381e95c37f7f 100644 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.js +++ b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.js @@ -1,32 +1,46 @@ -function removeSubfolders(folder) { - const createTrie = () => ({ '#': false, children: {} }); - const trie = createTrie(); - - for (const f of folder) { - const path = f.split('/'); - path.shift(); +class Trie { + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i, f) { + let node = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans = []; - const dfs = (trie, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; + search() { + const ans = []; + const dfs = root => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } + +/** + * @param {string[]} folder + * @return {string[]} + */ +var removeSubfolders = function (folder) { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +}; diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.ts b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.ts index 07802228b1dc7..fd6862e4b51a4 100644 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.ts +++ b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution2.ts @@ -1,37 +1,45 @@ -function removeSubfolders(folder: string[]): string[] { - const createTrie = (): T => ({ '#': false, children: {} }); - const trie = createTrie(); +class Trie { + children: Record; + fid: number; - for (const f of folder) { - const path = f.split('/'); - path.shift(); + constructor() { + this.children = {}; + this.fid = -1; + } - let node = trie; - for (const p of path) { - if (!node.children[p]) node.children[p] = createTrie(); + insert(i: number, f: string): void { + let node: Trie = this; + const ps = f.split('/'); + for (let j = 1; j < ps.length; ++j) { + const p = ps[j]; + if (!(p in node.children)) { + node.children[p] = new Trie(); + } node = node.children[p]; } - node['#'] = true; + node.fid = i; } - const ans: string[] = []; - const dfs = (trie: T, path = '') => { - if (trie['#']) { - ans.push(path); - return; - } - - for (const key in trie.children) { - dfs(trie.children[key], path + '/' + key); - } - }; - - dfs(trie); - - return ans; + search(): number[] { + const ans: number[] = []; + const dfs = (root: Trie): void => { + if (root.fid !== -1) { + ans.push(root.fid); + return; + } + for (const child of Object.values(root.children)) { + dfs(child); + } + }; + dfs(this); + return ans; + } } -type T = { - '#': boolean; - children: Record; -}; +function removeSubfolders(folder: string[]): string[] { + const trie = new Trie(); + for (let i = 0; i < folder.length; ++i) { + trie.insert(i, folder[i]); + } + return trie.search().map(i => folder[i]); +} diff --git a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution3.go b/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution3.go deleted file mode 100644 index 9a5f248168d9d..0000000000000 --- a/solution/1200-1299/1233.Remove Sub-Folders from the Filesystem/Solution3.go +++ /dev/null @@ -1,46 +0,0 @@ -type Trie struct { - children map[string]*Trie - fid int -} - -func newTrie() *Trie { - return &Trie{map[string]*Trie{}, -1} -} - -func (this *Trie) insert(fid int, f string) { - node := this - ps := strings.Split(f, "/") - for _, p := range ps[1:] { - if _, ok := node.children[p]; !ok { - node.children[p] = newTrie() - } - node = node.children[p] - } - node.fid = fid -} - -func (this *Trie) search() (ans []int) { - var dfs func(*Trie) - dfs = func(root *Trie) { - if root.fid != -1 { - ans = append(ans, root.fid) - return - } - for _, child := range root.children { - dfs(child) - } - } - dfs(this) - return -} - -func removeSubfolders(folder []string) (ans []string) { - trie := newTrie() - for i, f := range folder { - trie.insert(i, f) - } - for _, i := range trie.search() { - ans = append(ans, folder[i]) - } - return -} \ No newline at end of file diff --git a/solution/1900-1999/1962.Remove Stones to Minimize the Total/README.md b/solution/1900-1999/1962.Remove Stones to Minimize the Total/README.md index de6ec8f6b68bf..347d8989c2680 100644 --- a/solution/1900-1999/1962.Remove Stones to Minimize the Total/README.md +++ b/solution/1900-1999/1962.Remove Stones to Minimize the Total/README.md @@ -180,15 +180,14 @@ func (h *hp) pop() int { return heap.Pop(h).(int) } ```ts function minStoneSum(piles: number[], k: number): number { - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const x of piles) { pq.enqueue(x); } while (k--) { - pq.enqueue((pq.dequeue().element + 1) >> 1); + pq.enqueue((pq.dequeue() + 1) >> 1); } - - return pq.toArray().reduce((a, b) => a + b.element, 0); + return pq.toArray().reduce((a, b) => a + b, 0); } ``` diff --git a/solution/1900-1999/1962.Remove Stones to Minimize the Total/README_EN.md b/solution/1900-1999/1962.Remove Stones to Minimize the Total/README_EN.md index cc0e8df44b0fe..a02d5325c4441 100644 --- a/solution/1900-1999/1962.Remove Stones to Minimize the Total/README_EN.md +++ b/solution/1900-1999/1962.Remove Stones to Minimize the Total/README_EN.md @@ -178,15 +178,14 @@ func (h *hp) pop() int { return heap.Pop(h).(int) } ```ts function minStoneSum(piles: number[], k: number): number { - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const x of piles) { pq.enqueue(x); } while (k--) { - pq.enqueue((pq.dequeue().element + 1) >> 1); + pq.enqueue((pq.dequeue() + 1) >> 1); } - - return pq.toArray().reduce((a, b) => a + b.element, 0); + return pq.toArray().reduce((a, b) => a + b, 0); } ``` diff --git a/solution/1900-1999/1962.Remove Stones to Minimize the Total/Solution.ts b/solution/1900-1999/1962.Remove Stones to Minimize the Total/Solution.ts index b15b74422286e..3b211ba768acb 100644 --- a/solution/1900-1999/1962.Remove Stones to Minimize the Total/Solution.ts +++ b/solution/1900-1999/1962.Remove Stones to Minimize the Total/Solution.ts @@ -1,11 +1,10 @@ function minStoneSum(piles: number[], k: number): number { - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const x of piles) { pq.enqueue(x); } while (k--) { - pq.enqueue((pq.dequeue().element + 1) >> 1); + pq.enqueue((pq.dequeue() + 1) >> 1); } - - return pq.toArray().reduce((a, b) => a + b.element, 0); + return pq.toArray().reduce((a, b) => a + b, 0); } diff --git a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README.md b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README.md index 3c77aadedc860..1e467f4da77d2 100644 --- a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README.md +++ b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README.md @@ -244,14 +244,14 @@ function minLengthAfterRemovals(nums: number[]): number { for (const x of nums) { cnt.set(x, (cnt.get(x) ?? 0) + 1); } - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const [_, v] of cnt) { pq.enqueue(v); } let ans = nums.length; while (pq.size() > 1) { - let x = pq.dequeue().element; - let y = pq.dequeue().element; + let x = pq.dequeue(); + let y = pq.dequeue(); if (--x > 0) { pq.enqueue(x); } diff --git a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README_EN.md b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README_EN.md index 8e57a31d40058..6b4595c4100a7 100644 --- a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README_EN.md +++ b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/README_EN.md @@ -242,14 +242,14 @@ function minLengthAfterRemovals(nums: number[]): number { for (const x of nums) { cnt.set(x, (cnt.get(x) ?? 0) + 1); } - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const [_, v] of cnt) { pq.enqueue(v); } let ans = nums.length; while (pq.size() > 1) { - let x = pq.dequeue().element; - let y = pq.dequeue().element; + let x = pq.dequeue(); + let y = pq.dequeue(); if (--x > 0) { pq.enqueue(x); } diff --git a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/Solution.ts b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/Solution.ts index 02d365ead29b2..0ac90a284c272 100644 --- a/solution/2800-2899/2856.Minimum Array Length After Pair Removals/Solution.ts +++ b/solution/2800-2899/2856.Minimum Array Length After Pair Removals/Solution.ts @@ -3,14 +3,14 @@ function minLengthAfterRemovals(nums: number[]): number { for (const x of nums) { cnt.set(x, (cnt.get(x) ?? 0) + 1); } - const pq = new MaxPriorityQueue(); + const pq = new MaxPriorityQueue(); for (const [_, v] of cnt) { pq.enqueue(v); } let ans = nums.length; while (pq.size() > 1) { - let x = pq.dequeue().element; - let y = pq.dequeue().element; + let x = pq.dequeue(); + let y = pq.dequeue(); if (--x > 0) { pq.enqueue(x); }