diff --git a/.vscode/settings.json b/.vscode/settings.json index 54c94bd..fd3e5a1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -36,5 +36,16 @@ "zhan", "zhong", "zhuan" - ] + ], + "standard.options": { + "globals": [ + "$", + "jQuery", + "fetch" + ], + "usePackageJson": true, + "env": { + "jest": true + } + } } \ No newline at end of file diff --git a/README.md b/README.md index 506afc7..bcc8a3a 100644 --- a/README.md +++ b/README.md @@ -516,6 +516,10 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重 - LeetCode 108. 将有序数组转换为二叉搜索树 - LintCode 106. 有序链表转换为二叉搜索树 +- [不同的二叉搜索树](src/tree/unique-binary-search-trees.js) + + - LeetCode 96. 不同的二叉搜索树 + ## 链表 - [合并 K 个排序链表](src/list/merge-k-sorted-lists.js) diff --git a/src/tree/unique-binary-search-trees.js b/src/tree/unique-binary-search-trees.js new file mode 100644 index 0000000..257c069 --- /dev/null +++ b/src/tree/unique-binary-search-trees.js @@ -0,0 +1,12 @@ +// 卡塔兰数 +/** + * @param {number} n + * @return {number} + */ +export const numTrees = function (n) { + let C = 1 + for (let i = 0; i < n; ++i) { + C = C * 2 * (2 * i + 1) / (i + 2) + } + return C +} diff --git a/test/tree/unique-binary-search-trees.test.js b/test/tree/unique-binary-search-trees.test.js new file mode 100644 index 0000000..9fefff8 --- /dev/null +++ b/test/tree/unique-binary-search-trees.test.js @@ -0,0 +1,5 @@ +import { numTrees } from '../../src/tree/unique-binary-search-trees' + +test('不同的二叉搜索树', () => { + expect(numTrees(3)).toBe(5) +})