Merge branch 'master' of git.hxr.so:yige/js-practice
This commit is contained in:
commit
3395b76309
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -11,6 +11,7 @@
|
|||||||
"defanging",
|
"defanging",
|
||||||
"dvdf",
|
"dvdf",
|
||||||
"eleetminicoworoep",
|
"eleetminicoworoep",
|
||||||
|
"inorder",
|
||||||
"lcci",
|
"lcci",
|
||||||
"lcof",
|
"lcof",
|
||||||
"lcov",
|
"lcov",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"mincost",
|
"mincost",
|
||||||
"nums",
|
"nums",
|
||||||
"powx",
|
"powx",
|
||||||
|
"preorder",
|
||||||
"pwwkew",
|
"pwwkew",
|
||||||
"qian",
|
"qian",
|
||||||
"subarray",
|
"subarray",
|
||||||
|
10
README.md
10
README.md
@ -372,6 +372,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
|
|||||||
- LeetCode 560. 和为K的子数组 <https://leetcode-cn.com/problems/subarray-sum-equals-k/>
|
- LeetCode 560. 和为K的子数组 <https://leetcode-cn.com/problems/subarray-sum-equals-k/>
|
||||||
- LintCode 838. 子数组和为K <https://www.lintcode.com/problem/subarray-sum-equals-k/description>
|
- LintCode 838. 子数组和为K <https://www.lintcode.com/problem/subarray-sum-equals-k/description>
|
||||||
|
|
||||||
|
- [完美数](src/math/perfect-number.js)
|
||||||
|
|
||||||
|
- LeetCode 507. 完美数 <https://leetcode-cn.com/problems/perfect-number/>
|
||||||
|
- LintCode 1199. 完美的数 <https://www.lintcode.com/problem/perfect-number/description>
|
||||||
|
|
||||||
## 堆
|
## 堆
|
||||||
|
|
||||||
- [超级丑数](src/stack/super-ugly-number.js)【未完成】
|
- [超级丑数](src/stack/super-ugly-number.js)【未完成】
|
||||||
@ -411,6 +416,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
|
|||||||
- LeetCode 107. 二叉树的层次遍历 II <https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/>
|
- LeetCode 107. 二叉树的层次遍历 II <https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/>
|
||||||
- LintCode 70. 二叉树的层次遍历 II <https://www.lintcode.com/problem/binary-tree-level-order-traversal-ii/description>
|
- LintCode 70. 二叉树的层次遍历 II <https://www.lintcode.com/problem/binary-tree-level-order-traversal-ii/description>
|
||||||
|
|
||||||
|
- [从前序与中序遍历序列构造二叉树](src/tree/construct-binary-tree-from-preorder-and-inorder-traversal.js)
|
||||||
|
|
||||||
|
- LeetCode 105. 从前序与中序遍历序列构造二叉树 <https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/>
|
||||||
|
- LintCode 73. 前序遍历和中序遍历树构造二叉树 <https://www.lintcode.com/problem/construct-binary-tree-from-preorder-and-inorder-traversal/description>
|
||||||
|
|
||||||
## 链表
|
## 链表
|
||||||
|
|
||||||
- [合并K个排序链表](src/list/merge-k-sorted-lists.js)
|
- [合并K个排序链表](src/list/merge-k-sorted-lists.js)
|
||||||
|
16
src/math/perfect-number.js
Normal file
16
src/math/perfect-number.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
const pn = (p) => { // 欧几里得-欧拉定理
|
||||||
|
return (1 << (p - 1)) * ((1 << p) - 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} num
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export const checkPerfectNumber = function (num) {
|
||||||
|
const primes = [2, 3, 5, 7, 13, 17, 19, 31]
|
||||||
|
for (const prime of primes) {
|
||||||
|
if (pn(prime) === num) return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Definition for a binary tree node.
|
||||||
|
*/
|
||||||
|
function TreeNode (val) {
|
||||||
|
this.val = val
|
||||||
|
this.left = this.right = null
|
||||||
|
}
|
||||||
|
|
||||||
|
// 前序遍历:根左右
|
||||||
|
// 中序遍历:左根右
|
||||||
|
|
||||||
|
// 前序遍历知道根、中序遍历知道左边长度。
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number[]} preorder
|
||||||
|
* @param {number[]} inorder
|
||||||
|
* @return {TreeNode}
|
||||||
|
*/
|
||||||
|
export const buildTree = function (preorder, inorder) {
|
||||||
|
if (inorder.length === 0) return null
|
||||||
|
const root = new TreeNode(preorder[0])
|
||||||
|
const index = inorder.indexOf(preorder[0])
|
||||||
|
root.left = buildTree(preorder.slice(1, index + 1), inorder.slice(0, index))
|
||||||
|
root.right = buildTree(preorder.slice(index + 1), inorder.slice(index + 1))
|
||||||
|
return root
|
||||||
|
}
|
6
test/math/perfect-number.test.js
Normal file
6
test/math/perfect-number.test.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { checkPerfectNumber } from '../../src/math/perfect-number'
|
||||||
|
|
||||||
|
test('完美数', () => {
|
||||||
|
expect(checkPerfectNumber(28)).toBe(true)
|
||||||
|
expect(checkPerfectNumber(2)).toBe(false)
|
||||||
|
})
|
@ -0,0 +1,5 @@
|
|||||||
|
import { buildTree } from '../../src/tree/construct-binary-tree-from-preorder-and-inorder-traversal'
|
||||||
|
|
||||||
|
test('从前序与中序遍历序列构造二叉树', () => {
|
||||||
|
expect(buildTree([3, 9, 20, 15, 7], [9, 3, 15, 20, 7])).toEqual({ left: { left: null, right: null, val: 9 }, right: { left: { left: null, right: null, val: 15 }, right: { left: null, right: null, val: 7 }, val: 20 }, val: 3 })
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user