-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
266 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,107 @@ | ||
/** | ||
* 1.分饼干 | ||
* 1.分饼干/分糖果 | ||
* 2.删除有序数组的重复项 | ||
* 3.二叉树直径 | ||
* 4.背包问题 | ||
* 5.括号生成 | ||
* 6. | ||
* 6.判断子序列 | ||
* 7.不同的子序列 | ||
* 8.编辑距离 | ||
* 9.平衡二叉树 | ||
* 10.二叉树的最近公共祖先 | ||
* 11.二叉树的最大深度和最小深度 | ||
* 12.重排链表 | ||
*/ | ||
|
||
/** | ||
* @param {number} n | ||
* @return {string[]} | ||
* 输入:n = 3 | ||
输出:["((()))","(()())","(())()","()(())","()()()"] | ||
*/ | ||
var generateParenthesis = function (n) { | ||
let ans = []; | ||
let dfs = (n, left, right) => { | ||
if (left.length > right.length || right.length > n) return; | ||
dfs(n); | ||
}; | ||
dfs(n, '(', ')'); | ||
return ans; | ||
}; | ||
|
||
/** | ||
* | ||
输入: g = [1,2,3], s = [1,1] | ||
输出: 1 | ||
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。 | ||
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。 | ||
所以你应该输出1。 | ||
输入: g = [1,2], s = [1,2,3] | ||
输出: 2 | ||
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。 | ||
你拥有的饼干数量和尺寸都足以让所有孩子满足。 | ||
所以你应该输出2. | ||
*/ | ||
var findContentChildren = function (g, s) { | ||
g.sort((a, b) => a - b); | ||
s.sort((a, b) => a - b); | ||
let count = 0; | ||
let len = g.length - 1; | ||
for (let i = len; i >= 0; i--) { | ||
const last = s.slice(-1); | ||
if (last >= g[i]) { | ||
count++; | ||
s.pop(); | ||
} | ||
} | ||
return s; | ||
}; | ||
var findContentChildren = function (g, s) { | ||
let count = 0; | ||
let len = g.length - 1; | ||
let sLen = s.length - 1; | ||
for (let i = len; i >= 0; i--) { | ||
if (s[sLen] >= g[i]) { | ||
count++; | ||
sLen--; | ||
} | ||
} | ||
return s; | ||
}; | ||
|
||
// weight 1/3/4 | ||
// value 15/20/30 | ||
function weightBag(values, weights, size) { | ||
let len = weights.length; | ||
// 包 横向 | ||
// 物品纵向 | ||
let dp = new Array(len).fill().map(() => new Array(size + 1).fill(0)); | ||
// 初始化dp | ||
for (let i = weight[0]; i <= size; i++) { | ||
dp[0][i] = values[0]; | ||
} | ||
// 先遍历物品在遍历背包 | ||
for (let i = 1; i < len; i++) { | ||
for (let j = 0; j <= size; j++) { | ||
// 背包塞不下物品 | ||
if (j < weights[i]) { | ||
dp[i][j] = dp[i - 1][j]; | ||
} else { | ||
// 背包塞得下物品 | ||
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + values[i]); | ||
} | ||
} | ||
} | ||
return dp[len - 1][size]; | ||
} | ||
|
||
import { useEffect, useCallback } from 'react'; | ||
export function useEvent(handler) { | ||
let handlerRef = useRef(); | ||
useEffect(() => { | ||
handlerRef.current = handler; | ||
}); | ||
return useCallback((...arg) => { | ||
handlerRef.current(...arg); | ||
}, []); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,10 @@ | ||
/** | ||
* 1.每天都在写,到底记住了多少?离03月20日还剩两周,今天要做的就是反思回想 | ||
* 2.不同路径 | ||
* 3.从中序和后序遍历构造二叉树 | ||
* 4.青蛙跳台阶问题 | ||
* 5.二叉树的层次遍历 | ||
* 6.寻找重复数 | ||
* 7.复原IP地址 | ||
* 8.检测循环依赖 | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
title: useEvent | ||
order: 6 | ||
group: | ||
title: Hooks | ||
order: 1, | ||
nav: | ||
order: 3 | ||
title: 'react' | ||
path: /react | ||
--- | ||
|
||
## Demo | ||
|
||
我最喜欢的自定义 hook 之一是 useToggle,这是一个友好的助手,其工作方式几乎与 useState 完全相同,但只能在 true 和 false 之间切换状态变量: | ||
|
||
<code src="./index.tsx"></code> | ||
|
||
## Code | ||
|
||
```ts | ||
import React from 'react'; | ||
import useToggle from './useToggle'; | ||
|
||
const MyApp = () => { | ||
const [isDarkMode, toggleDarkMode] = useToggle(false); | ||
return <button onClick={toggleDarkMode}>Toggle color theme{isDarkMode}</button>; | ||
}; | ||
export default MyApp; | ||
``` | ||
|
||
## Source code | ||
|
||
```ts | ||
import { useCallback, useState } from 'react'; | ||
|
||
const useToggle = (initialValue: boolean) => { | ||
const [value, setValue] = useState(initialValue); | ||
const toggle = useCallback(() => { | ||
setValue((v) => !v); | ||
}, []); | ||
return [value, toggle]; | ||
}; | ||
export default useToggle; | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import React from 'react'; | ||
import useToggle from './useToggle'; | ||
|
||
const MyApp = () => { | ||
const [isDarkMode, toggleDarkMode] = useToggle(false); | ||
return <button onClick={toggleDarkMode}>Toggle color theme:{isDarkMode}</button>; | ||
}; | ||
export default MyApp; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import { useCallback, useState } from 'react'; | ||
|
||
const useToggle = (initialValue: boolean) => { | ||
const [value, setValue] = useState(initialValue); | ||
const toggle = useCallback(() => { | ||
setValue((v) => !v); | ||
}, []); | ||
return [value, toggle]; | ||
}; | ||
export default useToggle; |