From 8e82b989be3f7f17245cc42dcea5dd557a773962 Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 19 Jul 2024 22:40:16 +0300 Subject: [PATCH 1/2] feat: add ts solution to lc problem: No.1530 --- .../README.md | 37 +++++++++++++++++++ .../README_EN.md | 37 +++++++++++++++++++ .../Solution.ts | 32 ++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.ts diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md index 1c9be8fd91600..07b31a6bff1fc 100644 --- a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md @@ -270,6 +270,43 @@ func dfs(root *TreeNode, cnt []int, i int) { } ``` +#### TypeScript + +```ts +function countPairs(root: TreeNode | null, distance: number): number { + const pairs: number[][] = []; + + const dfs = (node: TreeNode | null): number[][] => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res: number[][] = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +} +``` + diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md index 8f970a762fca7..42751a94eb045 100644 --- a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md @@ -245,6 +245,43 @@ func dfs(root *TreeNode, cnt []int, i int) { } ``` +#### TypeScript + +```ts +function countPairs(root: TreeNode | null, distance: number): number { + const pairs: number[][] = []; + + const dfs = (node: TreeNode | null): number[][] => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res: number[][] = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +} +``` + diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.ts b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.ts new file mode 100644 index 0000000000000..2f65dca9127c5 --- /dev/null +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.ts @@ -0,0 +1,32 @@ +function countPairs(root: TreeNode | null, distance: number): number { + const pairs: number[][] = []; + + const dfs = (node: TreeNode | null): number[][] => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res: number[][] = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +} From 442b1a2d8d2f6216a160ed730c9ae1c94027180e Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 19 Jul 2024 22:43:42 +0300 Subject: [PATCH 2/2] feat: add js solution to lc problem: No.1530 --- .../README.md | 50 +++++++++++++++++++ .../README_EN.md | 50 +++++++++++++++++++ .../Solution.js | 45 +++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.js diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md index 07b31a6bff1fc..9aa18d9cce903 100644 --- a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md @@ -307,6 +307,56 @@ function countPairs(root: TreeNode | null, distance: number): number { } ``` +#### JavaScript + +```js +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @param {number} distance + * @return {number} + */ +var countPairs = function (root, distance) { + const pairs = []; + + const dfs = node => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +}; +``` + diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md index 42751a94eb045..6f73d2a52b3b4 100644 --- a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md @@ -282,6 +282,56 @@ function countPairs(root: TreeNode | null, distance: number): number { } ``` +#### JavaScript + +```js +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @param {number} distance + * @return {number} + */ +var countPairs = function (root, distance) { + const pairs = []; + + const dfs = node => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +}; +``` + diff --git a/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.js b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.js new file mode 100644 index 0000000000000..e2969fafa2178 --- /dev/null +++ b/solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/Solution.js @@ -0,0 +1,45 @@ +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @param {number} distance + * @return {number} + */ +var countPairs = function (root, distance) { + const pairs = []; + + const dfs = node => { + if (!node) return []; + if (!node.left && !node.right) return [[node.val, 1]]; + + const left = dfs(node.left); + const right = dfs(node.right); + + for (const [x, dx] of left) { + for (const [y, dy] of right) { + if (dx + dy <= distance) { + pairs.push([x, y]); + } + } + } + + const res = []; + for (const arr of [left, right]) { + for (const x of arr) { + if (++x[1] <= distance) res.push(x); + } + } + + return res; + }; + + dfs(root); + + return pairs.length; +};