From 0539f8b8fe4e019aee3a5cfc5c7a47bf6d935062 Mon Sep 17 00:00:00 2001 From: suukii Date: Sun, 13 Dec 2020 12:11:20 +0800 Subject: [PATCH 01/44] =?UTF-8?q?update:=20=E5=89=8D=E7=BC=80=E6=A0=91?= =?UTF-8?q?=E7=B3=BB=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- medium/day-42.md | 434 ------------------ .../41.implement-trie-prefix-tree.md} | 170 ++++--- medium/trie/42.map-sum-pairs.md | 372 +++++++++++++++ .../43.multi-search-lcci.md} | 51 +- 5 files changed, 487 insertions(+), 546 deletions(-) delete mode 100644 medium/day-42.md rename medium/{day-41.md => trie/41.implement-trie-prefix-tree.md} (60%) create mode 100644 medium/trie/42.map-sum-pairs.md rename medium/{day-43.md => trie/43.multi-search-lcci.md} (74%) diff --git a/README.md b/README.md index 6a6598e..4ca3eb5 100644 --- a/README.md +++ b/README.md @@ -209,9 +209,9 @@ ### 前缀树 -- [x] [【day-41】208.实现 Trie](./medium/day-41.md) -- [x] [【day-42】677.键值映射](./medium/day-42.md) -- [x] [【day-43】面试题 17.17.多次搜索](./medium/day-43.md) +- [x] [【day-41】208.实现 Trie](./medium/trie/41.implement-trie-prefix-tree.md) +- [x] [【day-42】677.键值映射](./medium/trie/42.map-sum-pairs.md) +- [x] [【day-43】面试题 17.17.多次搜索](./medium/trie/43.multi-search-lcci.md) ### 并查集 diff --git a/medium/day-42.md b/medium/day-42.md deleted file mode 100644 index 1e8c6cd..0000000 --- a/medium/day-42.md +++ /dev/null @@ -1,434 +0,0 @@ -# 677.键值映射 - -https://leetcode-cn.com/problems/map-sum-pairs - -- HashMap -- Trie -- Trie (优化版) -- Trie + HashMap -- Trie + HashMap (优化版) - -## 题目描述 - -``` -实现一个 MapSum 类里的两个方法,insert 和 sum。 - -对于方法 insert,你将得到一对(字符串,整数)的键值对。字符串表示键,整数表示值。如果键已经存在,那么原来的键值对将被替代成新的键值对。 - -对于方法 sum,你将得到一个表示前缀的字符串,你需要返回所有以该前缀开头的键的值的总和。 - -示例 1: - -输入: insert("apple", 3), 输出: Null -输入: sum("ap"), 输出: 3 -输入: insert("app", 2), 输出: Null -输入: sum("ap"), 输出: 5 - -来源:力扣(LeetCode) -链接:https://leetcode-cn.com/problems/map-sum-pairs -著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -``` - -## HashMap - -### 复杂度分析 - -- 时间复杂度:`insert` 是 $O(1)$ (不考虑哈希冲突的话),`sum` 是 $O(n*len(prefix))$,n 是 hashmap 的 key 总数,prefix 是要查找的前缀。 -- 空间复杂度:$O(n)$,n 是字符串的数量, - -### 代码 - -Python Code - -```py -class MapSum(object): - def __init__(self): - """ - Initialize your data structure here. - """ - self.hashmap = {} - - def insert(self, key, val): - """ - :type key: str - :type val: int - :rtype: None - """ - self.hashmap[key] = val - - def sum(self, prefix): - """ - :type prefix: str - :rtype: int - """ - res = 0 - for key in self.hashmap: - if key.startswith(prefix): - res += self.hashmap[key] - return res - - - -# Your MapSum object will be instantiated and called as such: -# obj = MapSum() -# obj.insert(key,val) -# param_2 = obj.sum(prefix) -``` - -## Trie - -### 思路 - -- 构建前缀树。 -- `sum` 操作的时候,先判断 `prefix` 是否存在前缀树中,然后找到 `prefix` 最后的节点,开始 DFS。 - -**DFS** - -- **大问题**:`dfs(node)` 应该要返回以这个节点开始的所有路径中的 `value` 的和。 -- **小问题**:`dfs(node.child)`,先找到以 `node` 的子节点开始的所有路径中的 `value` 的和。不过由于 `node` 有很多子节点,所以我们需要一个循环。 -- **大问题与小问题的关系**:当我们求出了全部 `dfs(node.child)`,那么 - - - `dfs(node) = node.value + dfs(node.child1) + dfs(node.child2) + ...` - -- **递归出口**:如果节点不存在,我们直接返回 0,停止递归。 - -### 复杂度分析 - -- 时间复杂度:`insert` 操作的时间复杂度是 $O(len(key))$,`sum` 操作的时间复杂度是 $O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。 -- 空间复杂度:$O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。 - -### 代码 - -TypeScript Code - -```ts -class TrieNode { - value: number - children: Array - - constructor(value: number) { - this.value = value - this.children = Array(26) - } -} - -class MapSum { - private root: TrieNode - - constructor() { - this.root = this._getTrieNode(0) - } - - private _getTrieNode(value: number): TrieNode { - return new TrieNode(value) - } - - private _char2Index(char: string): number { - return char.toLowerCase().charCodeAt(0) - 97 - } - - insert(key: string, val: number): void { - let crawl: TrieNode = this.root - for (let char of key) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) { - crawl.children[index] = this._getTrieNode(0) - } - crawl = crawl.children[index] - } - crawl.value = val - } - - private _dfs(crawl: TrieNode): number { - if (!crawl) return 0 - - return crawl.children.reduce( - (res: number, pointer: TrieNode): number => { - return res + (pointer ? this._dfs(pointer) : 0) - }, - crawl.value, - ) - } - - sum(prefix: string): number { - let crawl: TrieNode = this.root - for (let char of prefix) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return 0 - crawl = crawl.children[index] - } - return this._dfs(crawl) - } -} - -/** - * Your MapSum object will be instantiated and called as such: - * var obj = new MapSum() - * obj.insert(key,val) - * var param_2 = obj.sum(prefix) - */ -``` - -## Trie (优化版) - -在每个节点上存 `prefixSum`,可以把 `sum` 操作的时间复杂度降到 $O(1)$,代价是在 `insert` 的时候需要先检查 key 是否已经存在,存在的话要想从 `prefixSum` 中减去旧的 value,再加上新的 value。 - -### 复杂度分析 - -- 时间复杂度:`insert` 操作的时间复杂度是 $O(len(key))$,具体来说是 $O(2*len(key))$,一次查找 key 是否存在前缀树中,一次插入。`sum` 操作的时间复杂度是 $O(1)$。 -- 空间复杂度:$O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。 - -### 代码 - -```ts -class TrieNode { - value: number - prefixSum: number - children: Array - - constructor(value: number) { - this.value = value - this.prefixSum = 0 - this.children = Array(26) - } -} - -class MapSum { - private root: TrieNode - - constructor() { - this.root = this._getTrieNode(0) - } - - private _getTrieNode(value: number): TrieNode { - return new TrieNode(value) - } - - private _char2Index(char: string): number { - return char.toLowerCase().charCodeAt(0) - 97 - } - - search(key: string): number { - let crawl: TrieNode = this.root - for (let char of key) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return 0 - crawl = crawl.children[index] - } - return crawl.value - } - - insert(key: string, val: number): void { - let crawl: TrieNode = this.root - const existedVal: number = this.search(key) - for (let char of key) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) { - crawl.children[index] = this._getTrieNode(0) - } - crawl = crawl.children[index] - crawl.prefixSum = crawl.prefixSum - existedVal + val - } - crawl.value = val - } - - sum(prefix: string): number { - let crawl: TrieNode = this.root - - for (let char of prefix) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return 0 - crawl = crawl.children[index] - } - return crawl.prefixSum - } -} - -/** - * Your MapSum object will be instantiated and called as such: - * var obj = new MapSum() - * obj.insert(key,val) - * var param_2 = obj.sum(prefix) - */ -``` - -## Trie + HashMap - -### 思路 - -把以某个前缀开始的 `key` 相应的 `value`,以 hashmap 的形式存在这个前缀的最后一个节点中。比如, - -- 我们先插入了一个 `(dark, 3)`, -- 然后再插入一个 `(darkest, 2)`, -- 那这时表示 `k` 的那个节点的 hashmap 应该是这样: - - `{ dark: 3, darkest: 2 }` -- 这时如果我们再次插入 `(darkest, 5)`,覆盖了之前的值,那 `k` 节点的 hashmap 就变成了: - - `{ dark: 3, darkest: 5 }` - -> 当然,d, a, r 节点上的数据结构也和 k 节点一样 - -现在,我们的 `sum` 操作就变成了: - -1. 找到 `prefix` 的结束节点。 -2. 计算这个节点中的 hashmap 的 `value` 和。 - -不过我们还可以继续优化一点,在存 hashmap 的时候,也顺便存一个 `prefixSum`,也就是上述第 2 步得到的值。当我们往前缀树插入重复的 `key` 时,由于有 hashmap 的存在,我们就可以从 `prefixSum` 中删除这个 `key` 对应的旧的 `value`,然后加上新的 `value`。 - -### 复杂度分析 - -- 时间复杂度:`insert` 是 $O(len(key))$,`sum` 是 $O(len(prefix))$。 -- 空间复杂度:Trie 的空间复杂度是 $O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。然后每个节点还有一个 hashmap,这个,怎么算啊? - -### 代码 - -TypeScript Code - -```ts -class TrieNode { - value: number - prefixSum: number - prefixMap: { - [key: string]: number - } - children: Array - - constructor(value: number) { - this.value = value - this.prefixSum = 0 - this.prefixMap = {} - this.children = Array(26) - } -} - -class MapSum { - private root: TrieNode - - constructor() { - this.root = this._getTrieNode(0) - } - - private _getTrieNode(value: number): TrieNode { - return new TrieNode(value) - } - - private _char2Index(char: string): number { - return char.toLowerCase().charCodeAt(0) - 97 - } - - insert(key: string, val: number): void { - let crawl: TrieNode = this.root - for (let char of key) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) { - crawl.children[index] = this._getTrieNode(0) - } - crawl = crawl.children[index] - if (key in crawl.prefixMap) { - crawl.prefixSum -= crawl.prefixMap[key] - } - crawl.prefixMap[key] = val - crawl.prefixSum += val - } - crawl.value = val - } - - sum(prefix: string): number { - let crawl: TrieNode = this.root - - for (let char of prefix) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return 0 - crawl = crawl.children[index] - } - return crawl.prefixSum - } -} - -/** - * Your MapSum object will be instantiated and called as such: - * var obj = new MapSum() - * obj.insert(key,val) - * var param_2 = obj.sum(prefix) - */ -``` - -## Trie + HashMap (优化版 1) - -### 思路 - -上一个方法中其实没有必要把 hashmap 放到每个节点中,只需要用一个全局的 hashmap 来记录前缀树已存在的 key 就好了。 - -### 代码 - -```ts -class TrieNode { - value: number - prefixSum: number - children: Array - - constructor(value: number) { - this.value = value - this.prefixSum = 0 - this.children = Array(26) - } -} - -class MapSum { - private root: TrieNode - private existedWords: { - [key: string]: number - } - - constructor() { - this.root = this._getTrieNode(0) - this.existedWords = {} - } - - private _getTrieNode(value: number): TrieNode { - return new TrieNode(value) - } - - private _char2Index(char: string): number { - return char.toLowerCase().charCodeAt(0) - 97 - } - - insert(key: string, val: number): void { - let crawl: TrieNode = this.root - for (let char of key) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) { - crawl.children[index] = this._getTrieNode(0) - } - crawl = crawl.children[index] - if (key in this.existedWords) { - crawl.prefixSum -= this.existedWords[key] - } - crawl.prefixSum += val - } - this.existedWords[key] = val - crawl.value = val - } - - sum(prefix: string): number { - let crawl: TrieNode = this.root - - for (let char of prefix) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return 0 - crawl = crawl.children[index] - } - return crawl.prefixSum - } -} - -/** - * Your MapSum object will be instantiated and called as such: - * var obj = new MapSum() - * obj.insert(key,val) - * var param_2 = obj.sum(prefix) - */ -``` - -**官方题解** - -https://github.com/leetcode-pp/91alg-1/issues/69#issuecomment-657210282 diff --git a/medium/day-41.md b/medium/trie/41.implement-trie-prefix-tree.md similarity index 60% rename from medium/day-41.md rename to medium/trie/41.implement-trie-prefix-tree.md index ddfbaf8..78f50dc 100644 --- a/medium/day-41.md +++ b/medium/trie/41.implement-trie-prefix-tree.md @@ -33,48 +33,6 @@ trie.search("app"); // 返回 true https://medium.com/basecs/trying-to-understand-tries-3ec6bede0014 -## 输入输出 - -Nodejs - -```js -const __main__ = function () { - const readline = require('readline') - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }) - - console.log('******输入******') - rl.prompt() - const lines = [] - rl.on('line', line => lines.push(line)) - - rl.on('close', () => { - console.log('\n******输出******') - - const test = (operations, params) => { - if (operations[0] === 'Trie') { - const trie = new Trie() - const output = [null] - for (let i = 1; i < operations.length; i++) { - const res = trie[operations[i]](...params[i]) - output.push(res === void 0 ? null : res) - } - console.log(output) - } else { - console.log(Array(operations.length).fill(null)) - } - } - - while (lines.length >= 2) { - const params = lines.splice(0, 2) - test(...params.map(el => JSON.parse(el))) - } - }) -} -``` - ## 复杂度分析 - 时间复杂度:$O(L)$,L 是字符串长度, `insert` `search` `startsWith` 操作都是。 @@ -86,60 +44,60 @@ TypeScript Code ```ts class TrieNode { - value: string - children: Array + value: string; + children: Array; constructor(value) { - this.value = value - this.children = Array(26) + this.value = value; + this.children = Array(26); } } class Trie { - private root: TrieNode + private root: TrieNode; constructor() { - this.root = this._getTrieNode('') + this.root = this._getTrieNode(''); } private _getTrieNode(value: string): TrieNode { - return new TrieNode(value) + return new TrieNode(value); } private _char2Index(char: string): number { - return char.toLowerCase().charCodeAt(0) - 97 + return char.toLowerCase().charCodeAt(0) - 97; } insert(word: string): void { - let crawl: TrieNode = this.root + let crawl: TrieNode = this.root; for (let char of word) { - const index: number = this._char2Index(char) + const index: number = this._char2Index(char); if (!crawl.children[index]) { - crawl.children[index] = this._getTrieNode('') + crawl.children[index] = this._getTrieNode(''); } - crawl = crawl.children[index] + crawl = crawl.children[index]; } - crawl.value = word + crawl.value = word; } search(word: string): boolean { - let crawl: TrieNode = this.root + let crawl: TrieNode = this.root; for (let char of word) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return false - crawl = crawl.children[index] + const index: number = this._char2Index(char); + if (!crawl.children[index]) return false; + crawl = crawl.children[index]; } - return crawl.value === word + return crawl.value === word; } startsWith(prefix: string): boolean { - let crawl: TrieNode = this.root + let crawl: TrieNode = this.root; for (let char of prefix) { - const index: number = this._char2Index(char) - if (!crawl.children[index]) return false - crawl = crawl.children[index] + const index: number = this._char2Index(char); + if (!crawl.children[index]) return false; + crawl = crawl.children[index]; } - return true + return true; } } @@ -157,21 +115,21 @@ JavaScript Code ```js class TrieNode { constructor(val) { - this.value = val - this.pointers = Array(26) + this.value = val; + this.pointers = Array(26); } } class Trie { constructor() { - this.root = this._getTrieNode('') + this.root = this._getTrieNode(''); } /** * @param {string} val */ _getTrieNode(val) { - return new TrieNode(val) + return new TrieNode(val); } /** @@ -179,7 +137,7 @@ class Trie { * @returns {number} */ _char2Index(char) { - return char.toLowerCase().charCodeAt(0) - 97 + return char.toLowerCase().charCodeAt(0) - 97; } /** @@ -188,16 +146,16 @@ class Trie { * @return {void} */ insert(word) { - let crawl = this.root + let crawl = this.root; for (let char of word) { - const index = this._char2Index(char) + const index = this._char2Index(char); if (!crawl.pointers[index]) { - crawl.pointers[index] = this._getTrieNode('') + crawl.pointers[index] = this._getTrieNode(''); } - crawl = crawl.pointers[index] + crawl = crawl.pointers[index]; } // Store the word in the last TrieNode as an end mark. - crawl.value = word + crawl.value = word; } /** @@ -206,16 +164,16 @@ class Trie { * @return {boolean} */ search(word) { - let crawl = this.root + let crawl = this.root; for (let char of word) { - const index = this._char2Index(char) - if (!crawl.pointers[index]) return false + const index = this._char2Index(char); + if (!crawl.pointers[index]) return false; - crawl = crawl.pointers[index] + crawl = crawl.pointers[index]; } // If it has a stored value, it is the last TrieNode, i.e., the desired word is found. // Otherwise, the word doesn't exist in Trie. - return !!crawl.value + return !!crawl.value; } /** @@ -224,18 +182,56 @@ class Trie { * @return {boolean} */ startsWith(prefix) { - let crawl = this.root + let crawl = this.root; for (let char of prefix) { - const index = this._char2Index(char) - if (!crawl.pointers[index]) return false + const index = this._char2Index(char); + if (!crawl.pointers[index]) return false; - crawl = crawl.pointers[index] + crawl = crawl.pointers[index]; } - return true + return true; } } ``` -**官方题解** +## 输入输出 + +Nodejs + +```js +const __main__ = function () { + const readline = require('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + console.log('******输入******'); + rl.prompt(); + const lines = []; + rl.on('line', line => lines.push(line)); -https://github.com/leetcode-pp/91alg-1/issues/68#issuecomment-657077878 + rl.on('close', () => { + console.log('\n******输出******'); + + const test = (operations, params) => { + if (operations[0] === 'Trie') { + const trie = new Trie(); + const output = [null]; + for (let i = 1; i < operations.length; i++) { + const res = trie[operations[i]](...params[i]); + output.push(res === void 0 ? null : res); + } + console.log(output); + } else { + console.log(Array(operations.length).fill(null)); + } + }; + + while (lines.length >= 2) { + const params = lines.splice(0, 2); + test(...params.map(el => JSON.parse(el))); + } + }); +}; +``` diff --git a/medium/trie/42.map-sum-pairs.md b/medium/trie/42.map-sum-pairs.md new file mode 100644 index 0000000..8eff95f --- /dev/null +++ b/medium/trie/42.map-sum-pairs.md @@ -0,0 +1,372 @@ +# 677.键值映射 + +https://leetcode-cn.com/problems/map-sum-pairs + +- [677.键值映射](#677键值映射) + - [题目描述](#题目描述) + - [方法 1:HashMap](#方法-1hashmap) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法 2:Trie + DFS](#方法-2trie--dfs) + - [思路](#思路) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + - [方法 3:Trie + 时间优化](#方法-3trie--时间优化) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-2) + - [代码](#代码-2) + - [方法 4:Trie + HashMap](#方法-4trie--hashmap) + - [思路](#思路-2) + - [复杂度分析](#复杂度分析-3) + - [代码](#代码-3) + +## 题目描述 + +``` +实现一个 MapSum 类里的两个方法,insert 和 sum。 + +对于方法 insert,你将得到一对(字符串,整数)的键值对。字符串表示键,整数表示值。如果键已经存在,那么原来的键值对将被替代成新的键值对。 + +对于方法 sum,你将得到一个表示前缀的字符串,你需要返回所有以该前缀开头的键的值的总和。 + +示例 1: + +输入: insert("apple", 3), 输出: Null +输入: sum("ap"), 输出: 3 +输入: insert("app", 2), 输出: Null +输入: sum("ap"), 输出: 5 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/map-sum-pairs +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:HashMap + +### 复杂度分析 + +| | 时间 | 空间 | +| ------ | ----------------------------------------------- | -------------- | +| insert | $O(1)$ (不考虑哈希冲突的话) | $O(n)$ | +| sum | $O(n*len(prefix))$ | $O(n)$ | +| 备注 | n 是 hashmap 的 key 总数,prefix 是要查找的前缀 | n 是字符串数量 | + +### 代码 + +Python Code + +```py +class MapSum(object): + def __init__(self): + """ + Initialize your data structure here. + """ + self.hashmap = {} + + def insert(self, key, val): + """ + :type key: str + :type val: int + :rtype: None + """ + self.hashmap[key] = val + + def sum(self, prefix): + """ + :type prefix: str + :rtype: int + """ + res = 0 + for key in self.hashmap: + if key.startswith(prefix): + res += self.hashmap[key] + return res + + + +# Your MapSum object will be instantiated and called as such: +# obj = MapSum() +# obj.insert(key,val) +# param_2 = obj.sum(prefix) +``` + +## 方法 2:Trie + DFS + +### 思路 + +- 构建前缀树。 +- `sum` 操作的时候,先判断 `prefix` 是否存在前缀树中,然后找到 `prefix` 最后的节点,开始 DFS。 + +**DFS** + +- **大问题**:`dfs(node)` 应该要返回以这个节点开始的所有路径中的 `value` 的和。 +- **小问题**:`dfs(node.child)`,先找到以 `node` 的子节点开始的所有路径中的 `value` 的和。不过由于 `node` 有很多子节点,所以我们需要一个循环。 +- **大问题与小问题的关系**:当我们求出了全部 `dfs(node.child)`,那么 + + - `dfs(node) = node.value + dfs(node.child1) + dfs(node.child2) + ...` + +- **递归出口**:如果节点不存在,我们直接返回 0,停止递归。 + +### 复杂度分析 + +- 时间复杂度:`insert` 操作的时间复杂度是 $O(len(key))$,`sum` 操作的时间复杂度是 $O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。 +- 空间复杂度:$O(m^{n})$,m 是字符集中字符数量,n 是字符串长度。 + +| | 时间 | 空间 | +| ------ | ------------------------------------ | ---------- | +| insert | $O(len(key))$ | $O(m^{n})$ | +| sum | $O(m^{n})$ | $O(m^{n})$ | +| 备注 | m 是字符集中字符数量,n 是字符串长度 | | + +### 代码 + +TypeScript Code + +```ts +class TrieNode { + value: number; + children: Array; + + constructor(value: number) { + this.value = value; + this.children = Array(26); + } +} + +class MapSum { + private root: TrieNode; + + constructor() { + this.root = this._getTrieNode(0); + } + + private _getTrieNode(value: number): TrieNode { + return new TrieNode(value); + } + + private _char2Index(char: string): number { + return char.toLowerCase().charCodeAt(0) - 97; + } + + insert(key: string, val: number): void { + let crawl: TrieNode = this.root; + for (let char of key) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) { + crawl.children[index] = this._getTrieNode(0); + } + crawl = crawl.children[index]; + } + crawl.value = val; + } + + private _dfs(crawl: TrieNode): number { + if (!crawl) return 0; + + return crawl.children.reduce( + (res: number, pointer: TrieNode): number => { + return res + (pointer ? this._dfs(pointer) : 0); + }, + crawl.value, + ); + } + + sum(prefix: string): number { + let crawl: TrieNode = this.root; + for (let char of prefix) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) return 0; + crawl = crawl.children[index]; + } + return this._dfs(crawl); + } +} + +/** + * Your MapSum object will be instantiated and called as such: + * var obj = new MapSum() + * obj.insert(key,val) + * var param_2 = obj.sum(prefix) + */ +``` + +## 方法 3:Trie + 时间优化 + +### 思路 + +在每个节点上存 `prefixSum`,可以把 `sum` 操作的时间复杂度降到 $O(1)$,代价是在 `insert` 的时候需要先检查 key 是否已经存在,存在的话要先从 `prefixSum` 中减去旧的 value,再加上新的 value。 + +### 复杂度分析 + +| | 时间 | 空间 | +| ------ | ------------- | ------------------------------------ | +| insert | $O(len(key))$ | $O(m^{n})$ | +| sum | $O(1)$ | $O(m^{n})$ | +| 备注 | | m 是字符集中字符数量,n 是字符串长度 | + +### 代码 + +```ts +class TrieNode { + value: number; + prefixSum: number; + children: Array; + + constructor(value: number) { + this.value = value; + this.prefixSum = 0; + this.children = Array(26); + } +} + +class MapSum { + private root: TrieNode; + + constructor() { + this.root = this._getTrieNode(0); + } + + private _getTrieNode(value: number): TrieNode { + return new TrieNode(value); + } + + private _char2Index(char: string): number { + return char.toLowerCase().charCodeAt(0) - 97; + } + + search(key: string): number { + let crawl: TrieNode = this.root; + for (let char of key) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) return 0; + crawl = crawl.children[index]; + } + return crawl.value; + } + + insert(key: string, val: number): void { + let crawl: TrieNode = this.root; + const existedVal: number = this.search(key); + for (let char of key) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) { + crawl.children[index] = this._getTrieNode(0); + } + crawl = crawl.children[index]; + crawl.prefixSum = crawl.prefixSum - existedVal + val; + } + crawl.value = val; + } + + sum(prefix: string): number { + let crawl: TrieNode = this.root; + + for (let char of prefix) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) return 0; + crawl = crawl.children[index]; + } + return crawl.prefixSum; + } +} + +/** + * Your MapSum object will be instantiated and called as such: + * var obj = new MapSum() + * obj.insert(key,val) + * var param_2 = obj.sum(prefix) + */ +``` + +## 方法 4:Trie + HashMap + +### 思路 + +在方法 3 的基础上再加一个 hashmap,把以某个前缀开始的 `key` 和相应的 `value`存起来,比如, + +- 我们先插入了一个 `(dark, 3)`,然后再插入一个 `(darkest, 2)` +- 这时的 hashmap 应该是这样: + - `{ dark: 3, darkest: 2 }` +- 这时如果我们再次插入 `(darkest, 5)`,覆盖了之前的值,那 hashmap 就变成了: + - `{ dark: 3, darkest: 5 }` + +### 复杂度分析 + +| | 时间 | 空间 | +| ------ | ---------------- | ------------------------------------ | +| insert | $O(len(key))$ | $O(m^{n})$ | +| sum | $O(len(prefix))$ | $O(m^{n})$ | +| 备注 | | m 是字符集中字符数量,n 是字符串长度 | + +### 代码 + +```ts +class TrieNode { + value: number; + prefixSum: number; + children: Array; + + constructor(value: number) { + this.value = value; + this.prefixSum = 0; + this.children = Array(26); + } +} + +class MapSum { + private root: TrieNode; + private existedWords: { + [key: string]: number; + }; + + constructor() { + this.root = this._getTrieNode(0); + this.existedWords = {}; + } + + private _getTrieNode(value: number): TrieNode { + return new TrieNode(value); + } + + private _char2Index(char: string): number { + return char.toLowerCase().charCodeAt(0) - 97; + } + + insert(key: string, val: number): void { + let crawl: TrieNode = this.root; + for (let char of key) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) { + crawl.children[index] = this._getTrieNode(0); + } + crawl = crawl.children[index]; + if (key in this.existedWords) { + crawl.prefixSum -= this.existedWords[key]; + } + crawl.prefixSum += val; + } + this.existedWords[key] = val; + crawl.value = val; + } + + sum(prefix: string): number { + let crawl: TrieNode = this.root; + + for (let char of prefix) { + const index: number = this._char2Index(char); + if (!crawl.children[index]) return 0; + crawl = crawl.children[index]; + } + return crawl.prefixSum; + } +} + +/** + * Your MapSum object will be instantiated and called as such: + * var obj = new MapSum() + * obj.insert(key,val) + * var param_2 = obj.sum(prefix) + */ +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) diff --git a/medium/day-43.md b/medium/trie/43.multi-search-lcci.md similarity index 74% rename from medium/day-43.md rename to medium/trie/43.multi-search-lcci.md index 2120bd0..3fd43a5 100644 --- a/medium/day-43.md +++ b/medium/trie/43.multi-search-lcci.md @@ -2,8 +2,15 @@ https://leetcode-cn.com/problems/multi-search-lcci -- Trie -- 暴力 +- [面试题 17.17.多次搜索](#面试题-1717多次搜索) + - [题目描述](#题目描述) + - [方法 1:Trie](#方法-1trie) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法 2:暴力法](#方法-2暴力法) + - [思路](#思路-1) + - [代码](#代码-1) ## 题目描述 @@ -29,7 +36,7 @@ smalls的总字符数不会超过 100000。 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## Trie +## 方法 1:Trie ### 思路 @@ -44,8 +51,10 @@ smalls的总字符数不会超过 100000。 ### 复杂度分析 -- 时间复杂度:`insert` 是 $O(n*m)$,n 是 `smalls` 的长度,m 是短串的平均长度,`search` -- 空间复杂度: +| | 时间 | 空间 | +| ------ | ----------------------------------------- | ------------------------------------------------- | +| insert | $O(len(smalls)*avg)$ avg 是短串的平均长度 | $O(n^{avg})$ n 是字符集大小,avg 是短串的平均长度 | +| search | $O(maxLen(smalls)*len(smalls))$ | $O(n^{m})$ | ### 代码 @@ -76,33 +85,33 @@ TypeScript Code ```ts function multiSearch(big: string, smalls: string[]): number[][] { // 把短字符串存进 Trie - const trie: Trie = new Trie() + const trie: Trie = new Trie(); smalls.forEach((word: string, index: number): void => { - trie.insert(word, index) - }) + trie.insert(word, index); + }); const res: number[][] = Array(smalls.length) .fill(0) - .map(() => []) + .map(() => []); // 找到 smalls 中最长字符串长度 const longest: number = smalls.reduce( (res: number, word: string): number => Math.max(res, word.length), 0, - ) + ); // 遍历 big,将以 longest 为长度的子串拿到 Trie 中去找有没有匹配的短串 // 有的话,会返回那个短串在 smalls 中对应的下标,那就把子串对应的开始下标 i 存在对应的结果数组里好了 for (let i = 0; i < big.length; i++) { - const indices = trie.search(big.slice(i, i + longest)) - indices.forEach(index => res[index].push(i)) + const indices = trie.search(big.slice(i, i + longest)); + indices.forEach(index => res[index].push(i)); } - return res + return res; } ``` -## 暴力 +## 方法 2:暴力法 ### 思路 @@ -119,27 +128,25 @@ JavaScript * @return {number[][]} */ function multiSearch(big, smalls) { - const longest = smalls.reduce((res, w) => Math.max(res, w.length), 0) + const longest = smalls.reduce((res, w) => Math.max(res, w.length), 0); const res = Array(smalls.length) .fill(0) - .map(() => []) + .map(() => []); for (let i = 0; i < big.length; i++) { for (let j = i + 1; j <= i + longest && j <= big.length; j++) { - const subStr = big.slice(i, j) + const subStr = big.slice(i, j); for (let k = 0; k < smalls.length; k++) { if (smalls[k] === subStr) { - res[k].push(i) + res[k].push(i); } } } } - return res + return res; } ``` -**官方题解** - -https://github.com/leetcode-pp/91alg-1/issues/70#issuecomment-657434460 +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 11a7db744b7a99b1393323635194031dcb42fda4 Mon Sep 17 00:00:00 2001 From: suukii Date: Tue, 15 Dec 2020 17:43:44 +0800 Subject: [PATCH 02/44] =?UTF-8?q?update:=20=E5=B9=B6=E6=9F=A5=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- .../44.friend-circles.md} | 135 ++++++------- .../45.minimize-malware-spread.md} | 180 +++++++++--------- ...f-operations-to-make-network-connected.md} | 66 ++++--- 4 files changed, 197 insertions(+), 190 deletions(-) rename medium/{day-44.md => union-find/44.friend-circles.md} (63%) rename medium/{day-45.md => union-find/45.minimize-malware-spread.md} (65%) rename medium/{day-46.md => union-find/46.number-of-operations-to-make-network-connected.md} (62%) diff --git a/README.md b/README.md index 4ca3eb5..5660441 100644 --- a/README.md +++ b/README.md @@ -215,9 +215,9 @@ ### 并查集 -- [x] [【day-44】547.朋友圈](./medium/day-44.md) -- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/day-45.md) -- [x] [【day-46】1319.连通网络的操作次数](./medium/day-46.md) +- [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) +- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) +- [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) ### 跳表 diff --git a/medium/day-44.md b/medium/union-find/44.friend-circles.md similarity index 63% rename from medium/day-44.md rename to medium/union-find/44.friend-circles.md index f7f7199..b04e4d0 100644 --- a/medium/day-44.md +++ b/medium/union-find/44.friend-circles.md @@ -2,9 +2,17 @@ https://leetcode-cn.com/problems/friend-circles/ -- [并查集](#并查集) -- [DFS](#DFS) -- [BFS](#BFS) +- [547.朋友圈](#547朋友圈) + - [题目描述](#题目描述) + - [方法 1:并查集](#方法-1并查集) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法 2:DFS](#方法-2dfs) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码(递归)](#代码递归) + - [代码(迭代)](#代码迭代) ## 题目描述 @@ -41,7 +49,7 @@ N 在[1,200]的范围内。 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 并查集 +## 方法 1:并查集 ### 思路 @@ -51,13 +59,13 @@ N 在[1,200]的范围内。 **入门学习资料** -- [Using Disjoint Set (Union-Find) To Build A Maze Generator](https://coderscat.com/using-disjoint-set-union-find-to-create-maze) - [Disjoint Set Data Structure](https://www.topcoder.com/community/competitive-programming/tutorials/disjoint-set-data-structures/) -- [个人笔记](https://github.com/suukii/Articles/blob/master/articles/dsa_union_find.md) +- [Using Disjoint Set (Union-Find) To Build A Maze Generator](https://coderscat.com/using-disjoint-set-union-find-to-create-maze) +- [笔记](https://github.com/suukii/Articles/blob/master/articles/dsa/dsa_union_find.md) ### 复杂度分析 -- 时间复杂度:$O(α(n))$。 +- 时间复杂度:$O(α(n))$,无论 n 为多少, $α(n)$ 都小于 5。 - 空间复杂度:$O(N)$,N 为学生人数。 ### 代码 @@ -65,57 +73,57 @@ N 在[1,200]的范围内。 TypeScript Code ```ts +function findCircleNum(M: number[][]): number { + const len: number = M.length; + const uf: UnionFind = new UnionFind(len); + for (let i = 0; i < len; i++) { + for (let j = i + 1; j < len; j++) { + M[i][j] === 1 && uf.unionSet(i, j); + } + } + return uf.size(); +} + class UnionFind { - private parents: Array - private rank: Array - private numOfSets: number + private parents: Array; + private rank: Array; + private numOfSets: number; constructor(size: number) { this.parents = Array(size) .fill(0) - .map((_, i) => i) - this.rank = Array(size).fill(0) - this.numOfSets = size + .map((_, i) => i); + this.rank = Array(size).fill(0); + this.numOfSets = size; } size(): number { - return this.numOfSets + return this.numOfSets; } findSet(x: number): number { if (x !== this.parents[x]) { - this.parents[x] = this.findSet(this.parents[x]) + this.parents[x] = this.findSet(this.parents[x]); } - return this.parents[x] + return this.parents[x]; } unionSet(x: number, y: number): void { - const px: number = this.findSet(x) - const py: number = this.findSet(y) - if (px === py) return + const px: number = this.findSet(x); + const py: number = this.findSet(y); + if (px === py) return; if (this.rank[px] > this.rank[py]) { - this.parents[py] = px + this.parents[py] = px; } else { - this.parents[px] = py - this.rank[px] === this.rank[py] && ++this.rank[py] - } - this.numOfSets-- - } -} - -function findCircleNum(M: number[][]): number { - const len: number = M.length - const uf: UnionFind = new UnionFind(len) - for (let i = 0; i < len; i++) { - for (let j = i + 1; j < len; j++) { - M[i][j] === 1 && uf.unionSet(i, j) + this.parents[px] = py; + this.rank[px] === this.rank[py] && ++this.rank[py]; } + this.numOfSets--; } - return uf.size() } ``` -## DFS +## 方法 2:DFS ### 思路 @@ -127,74 +135,67 @@ function findCircleNum(M: number[][]): number { - 时间复杂度:$O(N)$,N 是矩阵 M 的长度,也就是学生数量。 - 空间复杂度:$O(N)$,N 是学生数量,记录访问状态的 `visited` 数组空间是 $O(N)$,递归栈的空间也是 $O(N)$。 -### 代码 +### 代码(递归) TypeScript Code ```ts function findCircleNum(M: number[][]): number { - const visited: Array = Array(M.length) - let groups: number = 0 + const visited: Array = Array(M.length); + let groups: number = 0; - const bfs = (M: number[][], cur: number, visited: Array): void => { + const dfs = (M: number[][], cur: number, visited: Array): void => { for (let i = 0; i < M[cur].length; i++) { // If they are not friends or the ith person has been visited, skip him. - if (M[cur][i] === 0 || visited[i]) continue + if (M[cur][i] === 0 || visited[i]) continue; // Mark as visited because they are all in the same friend circle with the cur person. // And continue the search. - visited[i] = true - bfs(M, i, visited) + visited[i] = true; + dfs(M, i, visited); } - } + }; for (let i = 0; i < M.length; i++) { // If he's not been visited, then there is a new friend circle. // Start searching for all his friends. if (!visited[i]) { - groups++ - visited[i] = true - bfs(M, i, visited) + groups++; + visited[i] = true; + dfs(M, i, visited); } } - return groups + return groups; } ``` -## BFS - -### 复杂度分析 - -- 时间复杂度:$O(N)$,N 是学生数量。 -- 空间复杂度:$O(N)$,N 是学生数量。 +### 代码(迭代) TypeScript Code ```ts function findCircleNum(M: number[][]): number { - let ans: number = 0 - const visited: Array = Array(M.length) - const stack: Array = [] + let ans: number = 0; + const visited: Array = Array(M.length); + const stack: Array = []; for (let i = 0; i < M.length; i++) { - if (visited[i]) continue + if (visited[i]) continue; - stack.push(i) - ans++ + stack.push(i); + ans++; while (stack.length) { - const cur: number = stack.pop() as number + const cur: number = stack.pop() as number; - visited[cur] = true - const friends: Array = M[cur] + visited[cur] = true; + const friends: Array = M[cur]; for (let j = 0; j < friends.length; j++) { - if (visited[j] || friends[j] === 0) continue - stack.push(j) + if (visited[j] || friends[j] === 0) continue; + stack.push(j); } } } - return ans + return ans; } ``` - -**官方题解** diff --git a/medium/day-45.md b/medium/union-find/45.minimize-malware-spread.md similarity index 65% rename from medium/day-45.md rename to medium/union-find/45.minimize-malware-spread.md index 83f8e01..2cf1c48 100644 --- a/medium/day-45.md +++ b/medium/union-find/45.minimize-malware-spread.md @@ -2,6 +2,14 @@ https://leetcode-cn.com/problems/minimize-malware-spread +- [924.尽量减少恶意软件的传播](#924尽量减少恶意软件的传播) + - [题目描述](#题目描述) + - [方法 1:并查集](#方法-1并查集) + - [思路 1](#思路-1) + - [代码](#代码) + - [思路 2](#思路-2) + - [代码](#代码-1) + ## 题目描述 ``` @@ -41,159 +49,149 @@ graph[i][i] == 1 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 思路 - -**前置知识** - -- 并查集 - -**入门学习资料** - -- [Using Disjoint Set (Union-Find) To Build A Maze Generator](https://coderscat.com/using-disjoint-set-union-find-to-create-maze) -- [Disjoint Set Data Structure](https://www.topcoder.com/community/competitive-programming/tutorials/disjoint-set-data-structures/) -- [个人笔记](https://github.com/suukii/Articles/blob/master/articles/dsa_union_find.md) +## 方法 1:并查集 -**思路 1** +### 思路 1 - 先构建并查集,并记录每个不交集的节点数。 -- 依次从 initial 中拿掉一个节点,然后分别计算感染节点数,记录最小感染数和对应的节点索引。 +- 依次从 initial 中删除一个节点,重新计算感染节点数,找到最小感染数和对应的节点索引。 -**思路 2** - -- 构建并查集 -- 找到一个满足以下条件的不交集: - 1. 集合中只有一个感染节点 - 2. 集合的节点数量最大 -- 如果不存在上述集合,那就返回 `initial` 中的最小索引 - -## 代码 +### 代码 TypeScript Code -UnionFind - -```ts -class UnionFind { - private parents: Array - private sizes: Array - - constructor(size: number) { - this.parents = Array(size) - .fill(0) - .map((_, i) => i) - this.sizes = Array(size).fill(1) - } - - getSizeOfSet(x: number): number { - const px = this.findSet(x) - return this.sizes[px] - } - - findSet(x: number): number { - if (x !== this.parents[x]) { - this.parents[x] = this.findSet(this.parents[x]) - } - return this.parents[x] - } - - unionSet(x: number, y: number): void { - const px: number = this.findSet(x) - const py: number = this.findSet(y) - if (px === py) return - if (this.sizes[px] > this.sizes[py]) { - this.parents[py] = px - this.sizes[px] += this.sizes[py] - } else { - this.parents[px] = py - this.sizes[py] += this.sizes[px] - } - } -} -``` - -思路 1: - ```ts function minMalwareSpread(graph: number[][], initial: number[]): number { // 构建并查集 - const len: number = graph.length - const uf: UnionFind = new UnionFind(len) + const len: number = graph.length; + const uf: UnionFind = new UnionFind(len); for (let i = 0; i < len; i++) { for (let j = i + 1; j < len; j++) { - graph[i][j] === 1 && uf.unionSet(i, j) + graph[i][j] === 1 && uf.unionSet(i, j); } } // 计算最终感染节点数 const countInfected = (initial: number[]): number => { - const parents: number[] = [] + const parents: number[] = []; for (let i = 0; i < initial.length; i++) { - const p = uf.findSet(initial[i]) - parents.find(e => e === p) || parents.push(p) + const p = uf.findSet(initial[i]); + parents.find(e => e === p) || parents.push(p); } return parents.reduce( (res: number, p: number): number => res + uf.getSizeOfSet(p), 0, - ) - } + ); + }; - let ans: number = 0 - let leastInfected: number = Infinity + let ans: number = 0; + let leastInfected: number = Infinity; for (let i = 0; i < initial.length; i++) { // 把第 i 个节点拿掉,然后计算感染节点数 const infected: number = countInfected([ ...initial.slice(0, i), ...initial.slice(i + 1), - ]) + ]); // 如果感染数更少,更新 ans if (infected < leastInfected) { - leastInfected = infected - ans = initial[i] + leastInfected = infected; + ans = initial[i]; } // 如果感染数一样少,取索引值较小的那个 else if (infected === leastInfected) { - initial[i] < ans && (ans = initial[i]) + initial[i] < ans && (ans = initial[i]); } } - return ans + return ans; } ``` -思路 2: +UnionFind + +```ts +class UnionFind { + private parents: Array; + private sizes: Array; + + constructor(size: number) { + this.parents = Array(size) + .fill(0) + .map((_, i) => i); + this.sizes = Array(size).fill(1); + } + + getSizeOfSet(x: number): number { + const px = this.findSet(x); + return this.sizes[px]; + } + + findSet(x: number): number { + if (x !== this.parents[x]) { + this.parents[x] = this.findSet(this.parents[x]); + } + return this.parents[x]; + } + + unionSet(x: number, y: number): void { + const px: number = this.findSet(x); + const py: number = this.findSet(y); + if (px === py) return; + if (this.sizes[px] > this.sizes[py]) { + this.parents[py] = px; + this.sizes[px] += this.sizes[py]; + } else { + this.parents[px] = py; + this.sizes[py] += this.sizes[px]; + } + } +} +``` + +### 思路 2 + +- 构建并查集 +- 找到一个满足以下条件的不交集: + 1. 集合中只有一个感染节点 + 2. 集合的节点数量最大 +- 如果不存在上述集合,那就返回 `initial` 中的最小索引 + +### 代码 + +TypeScript Code ```ts function minMalwareSpread(graph: number[][], initial: number[]): number { // 构建并查集 - const len: number = graph.length - const uf: UnionFind = new UnionFind(len) + const len: number = graph.length; + const uf: UnionFind = new UnionFind(len); for (let i = 0; i < len; i++) { for (let j = i + 1; j < len; j++) { - graph[i][j] === 1 && uf.unionSet(i, j) + graph[i][j] === 1 && uf.unionSet(i, j); } } // 计算每个不交集中分别有多少个感染节点 - const malwares: number[] = Array(len).fill(0) - initial.forEach(i => malwares[uf.findSet(i)]++) + const malwares: number[] = Array(len).fill(0); + initial.forEach(i => malwares[uf.findSet(i)]++); // ans: [集合的节点数总数,感染节点索引] - let ans: [number, number] = [1, Infinity] + let ans: [number, number] = [1, Infinity]; for (let i of initial) { // 如果某个集合中只有一个感染节点 if (malwares[uf.findSet(i)] === 1) { - const count = uf.getSizeOfSet(i) + const count = uf.getSizeOfSet(i); // 如果这个集合的节点数更多,更新 ans if (count > ans[0]) { - ans = [count, i] + ans = [count, i]; } // 如果有多个满足条件的集合,取索引值更小的那个节点 else if (count === ans[0]) { - ans = [count, Math.min(ans[1], i)] + ans = [count, Math.min(ans[1], i)]; } } } // 如果不存在满足条件的集合,返回感染节点中索引值最小的那个节点 - return ans[1] === Infinity ? Math.min(...initial) : ans[1] + return ans[1] === Infinity ? Math.min(...initial) : ans[1]; } ``` diff --git a/medium/day-46.md b/medium/union-find/46.number-of-operations-to-make-network-connected.md similarity index 62% rename from medium/day-46.md rename to medium/union-find/46.number-of-operations-to-make-network-connected.md index f7893fd..4d6b76e 100644 --- a/medium/day-46.md +++ b/medium/union-find/46.number-of-operations-to-make-network-connected.md @@ -1,6 +1,12 @@ # 1319.连通网络的操作次数 -https://github.com/leetcode-pp/91alg-1/issues/73 +https://leetcode-cn.com/problems/number-of-operations-to-make-network-connected/ + +- [1319.连通网络的操作次数](#1319连通网络的操作次数) + - [题目描述](#题目描述) + - [方法 1:并查集](#方法-1并查集) + - [思路](#思路) + - [代码](#代码) ## 题目描述 @@ -46,73 +52,75 @@ connections[i][0] != connections[i][1] 两台计算机不会通过多条线缆连接。 ``` -## 思路 +## 方法 1:并查集 + +### 思路 -一开始的思路: +一开始的思路是: -- 先构建并查集,这样我们就能知道一共有多少个网络了,接着我们需要把网络连接起来。 -- 要连接 n 个网络,需要 n - 1 根网线,那怎么知道我们有多少条多余的网线? +- 先构建并查集,这样我们就能知道一共有多少个网络(即多少个不交集)了,接着我们需要把网络连接起来。 +- 要连接 n 个网络,需要 n - 1 根网线,那怎么知道我们有多少多余的网线? - 很简单,在构建网络时,也就是合并不交集的时候,如果两个节点原本就在同一集合中,那我们就多出来一根网线了。 -- 最后判断一下多余网线是否不小于 n - 1 即可。 +- 最后判断一下多余网线是否大于等于 n - 1 即可。 但其实没有必要记录多余的网线,只要算一下数学就好了: - 如果连接数小于 `n - 1`,那就直接返回 -1; -- 否则,说明网线是足够连接 n 个节点的,构建完并查集之后,返回集合数量减一即可。 +- 否则,说明网线是足够连接 n 个节点的,构建完并查集之后,返回不交集的数量减一即可。 -## 代码 +### 代码 TypeScript Code ```ts function makeConnected(n: number, connections: number[][]): number { - const cables: number = connections.length - if (cables < n - 1) return -1 + const cables: number = connections.length; + if (cables < n - 1) return -1; - const uf: UnionFind = new UnionFind(n) + const uf: UnionFind = new UnionFind(n); for (let c of connections) { - uf.unionSet(c[0], c[1]) + uf.unionSet(c[0], c[1]); } - return uf.size() - 1 + return uf.size() - 1; } ``` ```ts class UnionFind { - private parents: Array - private rank: Array - private numOfSets: number + private parents: Array; + private rank: Array; + private numOfSets: number; constructor(size: number) { this.parents = Array(size) .fill(0) - .map((_, i) => i) - this.rank = Array(size).fill(0) - this.numOfSets = size + .map((_, i) => i); + this.rank = Array(size).fill(0); + this.numOfSets = size; } size(): number { - return this.numOfSets + return this.numOfSets; } findSet(x: number): number { if (x !== this.parents[x]) { - this.parents[x] = this.findSet(this.parents[x]) + this.parents[x] = this.findSet(this.parents[x]); } - return this.parents[x] + return this.parents[x]; } unionSet(x: number, y: number): void { - const px: number = this.findSet(x) - const py: number = this.findSet(y) - if (px === py) return + const px: number = this.findSet(x); + const py: number = this.findSet(y); + if (px === py) return; if (this.rank[px] > this.rank[py]) { - this.parents[py] = px + this.parents[py] = px; } else { - this.parents[px] = py - this.rank[px] === this.rank[py] && ++this.rank[py] + this.parents[px] = py; + this.rank[px] === this.rank[py] && ++this.rank[py]; } - this.numOfSets-- + this.numOfSets--; } } ``` From be49b3fa66194e5c9cbecba0ebc682af7af48887 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 18 Dec 2020 11:13:41 +0800 Subject: [PATCH 03/44] =?UTF-8?q?update:=20380.=E5=B8=B8=E6=95=B0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=8F=92=E5=85=A5=E3=80=81=E5=88=A0=E9=99=A4=E5=92=8C?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=9A=8F=E6=9C=BA=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext-insert-delete-getrandom-o1.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/basic/array-stack-queue/ext-insert-delete-getrandom-o1.md b/basic/array-stack-queue/ext-insert-delete-getrandom-o1.md index a067d17..4245e2b 100644 --- a/basic/array-stack-queue/ext-insert-delete-getrandom-o1.md +++ b/basic/array-stack-queue/ext-insert-delete-getrandom-o1.md @@ -1,6 +1,6 @@ # 380.常数时间插入、删除和获取随机元素 -https://leetcode-cn.com/problems/insert-delete-getrandom-o1/description/ +https://leetcode-cn.com/problems/insert-delete-getrandom-o1/ ## 题目描述 @@ -41,23 +41,23 @@ randomSet.getRandom(); 首先得考虑的是,用数组还是用链表来存,先来复习一下数组和链表常见操作的时间复杂度吧。 -### 数组常见操作时间复杂度分析 - -- 随机访问 -> O(1) -- 插入数值到数组 -> O(N) -- 插入数值到数组最后 -> O(1) -- 从数组删除数值 -> O(N) -- 从数组最后删除数值 -> O(1) - -### 链表常见操作时间复杂度分析 - -- 访问 -> O(N) -- 插入数值到链表 -> O(N) -- 插入数值到链表开头 -> O(1) -- 从链表删除数值 -> O(N) -- 从链表开头删除数值 -> O(1) - -很显然,链表时间复杂度为 O(N) 的访问操作并不符合我们的需求,所以我们还是选择数组来作为存储数据的容器。 +| 数组操作 | 时间复杂度 | +| ------------------ | ---------- | +| 随机访问 | $O(1)$ | +| 插入数值到数组 | $O(N)$ | +| 插入数值到数组最后 | $O(1)$ | +| 从数组删除数值 | $O(N)$ | +| 从数组最后删除数值 | $O(1)$ | + +| 链表操作 | 时间复杂度 | +| ------------------ | ---------- | +| 访问 | $O(N)$ | +| 插入数值到链表 | $O(N)$ | +| 插入数值到链表开头 | $O(1)$ | +| 从链表删除数值 | $O(N)$ | +| 从链表开头删除数值 | $O(1)$ | + +很显然,链表时间复杂度为 $O(N)$ 的访问操作并不符合我们的需求,所以我们还是选择数组来作为存储数据的容器。 ### 插入 From 2828c1102cee619444fb4e74ae8607684826c385 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 18 Dec 2020 11:28:57 +0800 Subject: [PATCH 04/44] =?UTF-8?q?update:=20814.=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E5=89=AA=E6=9E=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- medium/day-47.md | 54 ------------------- .../48.binary-tree-pruning.md} | 26 ++++----- 3 files changed, 16 insertions(+), 68 deletions(-) delete mode 100644 medium/day-47.md rename medium/{day-48.md => prune/48.binary-tree-pruning.md} (75%) diff --git a/README.md b/README.md index 5660441..b73af26 100644 --- a/README.md +++ b/README.md @@ -221,11 +221,11 @@ ### 跳表 -- [ ] [【day-47】1206.设计跳表](./medium/day-47.md) +- [ ] [【day-47】1206.设计跳表](./) ### 剪枝 -- [x] [【day-48】814.二叉树剪枝](./medium/day-48.md) +- [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) - [x] [【day-49】39.组合总和](./medium/day-49.md) - [x] [【day-49】39.组合总和](./medium/day-49.md) - [x] [【day-50】40.组合总和 II](./medium/day-50.md) diff --git a/medium/day-47.md b/medium/day-47.md deleted file mode 100644 index 7a44a35..0000000 --- a/medium/day-47.md +++ /dev/null @@ -1,54 +0,0 @@ -# 1206.设计跳表 - -https://leetcode-cn.com/problems/design-skiplist - -## 题目描述 - -``` -不使用任何库函数,设计一个跳表。 - -跳表是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。 - -例如,一个跳表包含 [30, 40, 50, 60, 70, 90],然后增加 80、45 到跳表中,以下图的方式操作: - - - -Artyom Kalinin [CC BY-SA 3.0], via Wikimedia Commons - -跳表中有很多层,每一层是一个短的链表。在第一层的作用下,增加、删除和搜索操作的时间复杂度不超过 O(n)。跳表的每一个操作的平均时间复杂度是 O(log(n)),空间复杂度是 O(n)。 - -在本题中,你的设计应该要包含这些函数: - -bool search(int target) : 返回target是否存在于跳表中。 -void add(int num): 插入一个元素到跳表。 -bool erase(int num): 在跳表中删除一个值,如果 num 不存在,直接返回false. 如果存在多个 num ,删除其中任意一个即可。 -了解更多 : https://en.wikipedia.org/wiki/Skip_list - -注意,跳表中可能存在多个相同的值,你的代码需要处理这种情况。 - -样例: - -Skiplist skiplist = new Skiplist(); - -skiplist.add(1); -skiplist.add(2); -skiplist.add(3); -skiplist.search(0); // 返回 false -skiplist.add(4); -skiplist.search(1); // 返回 true -skiplist.erase(0); // 返回 false,0 不在跳表中 -skiplist.erase(1); // 返回 true -skiplist.search(1); // 返回 false,1 已被擦除 -约束条件: - -0 <= num, target <= 20000 -最多调用 50000 次 search, add, 以及 erase操作。 - -来源:力扣(LeetCode) -链接:https://leetcode-cn.com/problems/design-skiplist -著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -``` - -**参考题解** - -https://github.com/leetcode-pp/91alg-1/issues/74#issuecomment-660018285 diff --git a/medium/day-48.md b/medium/prune/48.binary-tree-pruning.md similarity index 75% rename from medium/day-48.md rename to medium/prune/48.binary-tree-pruning.md index 6714aaa..ac219fe 100644 --- a/medium/day-48.md +++ b/medium/prune/48.binary-tree-pruning.md @@ -2,6 +2,12 @@ https://leetcode-cn.com/problems/binary-tree-pruning +- [814.二叉树剪枝](#814二叉树剪枝) + - [题目描述](#题目描述) + - [思路](#思路) + - [代码](#代码) + - [复杂度分析](#复杂度分析) + ## 题目描述 ``` @@ -35,7 +41,7 @@ https://leetcode-cn.com/problems/binary-tree-pruning ## 思路 -本题解由 lucifer 著名的[产品经理法](https://github.com/leetcode-pp/91alg-1/issues/32#issuecomment-643620727)倾情支持。 +用【产品经理法】的思维来解决递归问题。 **产品** @@ -43,11 +49,11 @@ https://leetcode-cn.com/problems/binary-tree-pruning **子问题** -明显就是 `pruneTree(root.left)` 和 `pruneTree(root.right)` 啦。 +明显是 `pruneTree(root.left)` 和 `pruneTree(root.right)`。 **大小问题的关系** -首先,我们用 `pruneTree(root.left)` 和 `pruneTree(root.right)` 的结果分别替换掉原本的左子树和右子树。接着,再决定这棵树要不要保留。 +首先,对于 `root`,我们用 `pruneTree(root.left)` 和 `pruneTree(root.right)` 的结果分别替换掉原本的 `root.left` 和 `root.right`。接着,再决定当前这棵树要不要保留。 - 如果此时左右子树有一个不为空的话,那说明这棵树是要保留的,直接返回 `root` 就行。 - 如果左右子树都为空,那我们就判断 `root.val` 的值,等于 1 就返回 `root`,等于 0 就返回 `null` 把这棵树移除。 @@ -76,20 +82,16 @@ TypeScript Code */ function pruneTree(root: TreeNode | null): TreeNode | null { - if (!root) return null + if (!root) return null; - root.left = pruneTree(root.left) - root.right = pruneTree(root.right) + root.left = pruneTree(root.left); + root.right = pruneTree(root.right); - return root.left || root.right || root.val === 1 ? root : null + return root.left || root.right || root.val === 1 ? root : null; } ``` ## 复杂度分析 - 时间复杂度:$O(N)$,N 为二叉树节点数。 -- 空间复杂度:$O(H)$,H 为二叉树的高度,递归时调用栈占用的最大空间就是二叉树的最大深度。 - -**参考题解** - -https://github.com/leetcode-pp/91alg-1/issues/75#issuecomment-660483924 +- 空间复杂度:$O(H)$,H 为二叉树的高度,递归栈的最大空间。 From 25fd14ece733a48be61638f3f2f043b00f0cf9ad Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 18 Dec 2020 11:34:46 +0800 Subject: [PATCH 05/44] update: gitignore --- .gitignore | 3 ++- README.md | 4 ---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e615a4d..e55653b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -**.local.** \ No newline at end of file +**.local.** +.vscode \ No newline at end of file diff --git a/README.md b/README.md index b73af26..d6d9294 100644 --- a/README.md +++ b/README.md @@ -43,10 +43,6 @@ > [在线电子书](https://app.gitbook.com/@suki/s/91-days-algorithm/) > -> [DSA 讲义 - private repo](https://github.com/leetcode-pp/91alg-2#%E8%AE%B2%E4%B9%89) -> -> [参考题解 - private repo](https://github.com/leetcode-pp/91alg-2#%E9%A2%98%E8%A7%A3) -> > [笔记](https://github.com/suukii/Articles#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%AE%97%E6%B3%95) ## 基础篇 From 766235cc3473b2fa09af3f72572034b25df56ea7 Mon Sep 17 00:00:00 2001 From: suukii Date: Tue, 22 Dec 2020 09:46:41 +0800 Subject: [PATCH 06/44] =?UTF-8?q?update:=2039.=E7=BB=84=E5=90=88=E6=80=BB?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../49.combination-sum.md} | 87 +++++++++++++++---- 2 files changed, 71 insertions(+), 18 deletions(-) rename medium/{day-49.md => prune/49.combination-sum.md} (50%) diff --git a/README.md b/README.md index d6d9294..e748e02 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ ### 剪枝 - [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) -- [x] [【day-49】39.组合总和](./medium/day-49.md) +- [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) - [x] [【day-49】39.组合总和](./medium/day-49.md) - [x] [【day-50】40.组合总和 II](./medium/day-50.md) - [ ] [【day-51】47.全排列 II](./medium/day-51.md) diff --git a/medium/day-49.md b/medium/prune/49.combination-sum.md similarity index 50% rename from medium/day-49.md rename to medium/prune/49.combination-sum.md index 3ae3c53..ac46655 100644 --- a/medium/day-49.md +++ b/medium/prune/49.combination-sum.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/combination-sum +- [39.组合总和](#39组合总和) + - [题目描述](#题目描述) + - [方法 1:回溯](#方法-1回溯) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + ## 题目描述 ``` @@ -44,7 +51,9 @@ candidate 中的每个元素都是独一无二的。 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 思路 +## 方法 1:回溯 + +### 思路 因为题目是求“所有可能的组合”,所以很自然想到了递归。感觉一提到组合我的第一反应就是,“对于每个元素,都有选与不选两种选择”,对每个元素分别作出选择后我们就得到了其中一个组合。 @@ -55,12 +64,15 @@ candidate 中的每个元素都是独一无二的。 - 不选:把数字从篮子里拿出来(回溯),然后对后面的数字进行递归(不包括当前数字) - 递归出口:如果篮子里的数字和大于 `target` 了,那我们就把这个篮子扔掉不管(剪枝);如果刚好等于 `target`,那就把篮子加到要返回的结果中,然后结束递归。 -## 复杂度分析 +### 复杂度分析 + +力扣官方的分析: -- 时间复杂度:时间复杂度我就从 n 叉树的角度来想吧,也不知道对不对,$O(len(candidates)^{target/min(candidates)})$。 -- 空间复杂度:调用栈的空间我感觉是 $O(target/min(candidates))$,一个组合最长的情况就是所有元素都是 min(candidate),所以返回结果的空间应该是......不会算了... +- 时间复杂度:$O(S)$,其中 S 为所有可行解的长度之和。从分析给出的搜索树我们可以看出时间复杂度取决于搜索树所有叶子节点的深度之和,即所有可行解的长度之和。在这题中,我们很难给出一个比较紧的上界,我们知道 $O(n*2^n)$ 是一个比较松的上界,即在这份代码中,n 个位置每次考虑选或者不选,如果符合条件,就加入答案的时间代价。但是实际运行的时候,因为不可能所有的解都满足条件,递归的时候我们还会用 `target - candidates[idx] >= 0` 进行剪枝,所以实际运行情况是远远小于这个上界的。 -## 代码 +- 空间复杂度:$O(target)$。除答案数组外,空间复杂度取决于递归的栈深度,在最差情况下需要递归 $O(target)$ 层。 + +### 代码 JavaScript Code @@ -72,25 +84,66 @@ JavaScript Code */ var combinationSum = function (candidates, target) { const dfs = (candidates, ans, remain, cur) => { - if (remain < 0) return + if (remain < 0) return; if (remain === 0) { - res.push(ans) - return + res.push(ans); + return; } while (cur < candidates.length) { if (candidates[cur] <= remain) { - ans.push(candidates[cur]) - dfs(candidates, [...ans], remain - candidates[cur], cur) - ans.pop() + ans.push(candidates[cur]); + dfs(candidates, [...ans], remain - candidates[cur], cur); + ans.pop(); } - cur++ + cur++; } - } + }; + + const res = []; + dfs(candidates, [], target, 0); + return res; +}; +``` + +JavaScript Code - const res = [] - dfs(candidates, [], target, 0) - return res -} +```js +/** + * @param {number[]} candidates + * @param {number} target + * @return {number[][]} + */ +var combinationSum = function (candidates, target) { + candidates.sort((a, b) => a - b); + const res = []; + dfs(candidates, 0, target); + return res; + + // ****************************************** + function dfs(arr, cur, target, tempArr = [], total = 0) { + if (total > target) return; + + if (total === target) { + res.push([...tempArr]); + return; + } + + // 因为数字可以重复选择,所以 i 从 cur 开始 + for (let i = cur; i < arr.length; i++) { + // 剪枝 + if (total + arr[cur] > target) break; + + // 选当前数字 + tempArr.push(arr[i]); + + // 递归决定选不选后面的数字 + dfs(arr, i, target, tempArr, total + arr[i]); + + // 不选当前数字 + tempArr.pop(); + } + } +}; ``` From bd75dc467059ff2bb72016628e54b098bb12e18f Mon Sep 17 00:00:00 2001 From: suukii Date: Sun, 27 Dec 2020 12:34:07 +0800 Subject: [PATCH 07/44] =?UTF-8?q?add:=205210.=E7=90=83=E4=BC=9A=E8=90=BD?= =?UTF-8?q?=E4=BD=95=E5=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 +- assets/5210_0.excalidraw | 428 ++++++++++++++++++ assets/5210_0.png | Bin 0 -> 40038 bytes .../searching/ext-where-will-the-ball-fall.md | 124 +++++ 4 files changed, 573 insertions(+), 7 deletions(-) create mode 100644 assets/5210_0.excalidraw create mode 100644 assets/5210_0.png create mode 100644 topics/searching/ext-where-will-the-ball-fall.md diff --git a/README.md b/README.md index e748e02..c14d3e4 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,13 @@ - [并查集](#并查集) - [跳表](#跳表) - [剪枝](#剪枝) + - [每日一题](#每日一题-5) + - [字符串匹配](#字符串匹配) + - [堆](#堆) - [专题篇](#专题篇) - [二分法](#二分法) - [滑动窗口](#滑动窗口) - - [每日一题](#每日一题-5) + - [每日一题](#每日一题-6) - [拓展题目](#拓展题目) - [位运算](#位运算) - [搜索(BFS, DFS, 回溯)](#搜索bfs-dfs-回溯) @@ -37,7 +40,7 @@ - [动态规划](#动态规划) - [分治](#分治) - [贪心](#贪心) - - [每日一题](#每日一题-6) + - [每日一题](#每日一题-7) - [贪心拓展题目](#贪心拓展题目) - [其他](#其他) @@ -131,7 +134,6 @@ #### 哈希表拓展题目 -- [x] [215.数组中的第 K 个最大元素](./basic/hashmap/ext-kth-largest-element-in-an-array.md) - [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) - [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) - [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) @@ -221,15 +223,20 @@ ### 剪枝 +#### 每日一题 + - [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) - [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) -- [x] [【day-49】39.组合总和](./medium/day-49.md) -- [x] [【day-50】40.组合总和 II](./medium/day-50.md) -- [ ] [【day-51】47.全排列 II](./medium/day-51.md) +- [x] [【day-50】40.组合总和 II](./medium/prune/50.combination-sum-ii.md) +- [ ] [【day-51】47.全排列 II](./medium/prune/51.permutations-ii.md) + +### 字符串匹配 + +- [ ] [【day-52】28.实现 strStr()](./medium/rk-kpm/52.implement-strstr.md) + - [ ] [【day-52】1371.每个元音包含偶数次的最长子字符串](./medium/day-52.md) - [ ] [【day-53】面试题 17.13.恢复空格](./medium/day-53.md) - [ ] [【day-54】1316.不同的循环子字符串](./) -- [ ] [【day-55】28.实现 strStr()](./) - [ ] [【day-56】215.数组中的第 K 个最大元素](./) - [ ] [【day-57】451.根据字符出现频率排序](./) - [ ] [【day-58】295.数据流的中位数](./) @@ -237,6 +244,10 @@ - [ ] [【day-60】1054.距离相等的条形码](./) - [ ] [【day-61】面试题 17.09.第 k 个数](./) +### 堆 + +- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/kth-largest-element-in-an-array.md) + ## 专题篇 ### 二分法 @@ -274,6 +285,9 @@ - [ ] [【day-78】 89.格雷编码](./topics/day-78.md) - [x] [【day-79】980.不同路径 III](./topics/day-79.md) + +- [x] [5210.球会落何处](./topics/searching/ext-where-will-the-ball-fall.md) + ### 背包问题 - [x] [【day-80】322.零钱兑换](./topics/day-80.md) diff --git a/assets/5210_0.excalidraw b/assets/5210_0.excalidraw new file mode 100644 index 0000000..d106560 --- /dev/null +++ b/assets/5210_0.excalidraw @@ -0,0 +1,428 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "rm3deO0uNVN_4d0C8BMXo", + "type": "rectangle", + "x": 566, + "y": 187.79127997160316, + "width": 135.19501164713662, + "height": 112.79126685989687, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1581409644, + "version": 101, + "versionNonce": 323840084, + "isDeleted": false, + "boundElementIds": [ + "_PahqQ3MPHbJZGP4o7EI4", + "Zdj9xJJR5iOOBBt8XX_31", + "O1eADCqD99jWoXEISG8az", + "oS5EoxpRcdxtQaPFqgb0C" + ] + }, + { + "id": "6xAmqFZEpWViR2LSa9Jdx", + "type": "line", + "x": 567.6797042146732, + "y": 188, + "width": 133.64992579974077, + "height": 111.24618101250095, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 707450860, + "version": 64, + "versionNonce": 75492564, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 133.64992579974077, + 111.24618101250095 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "UmD9_6oyxNSW6yuGZY8IB", + "type": "ellipse", + "x": 608, + "y": 122, + "width": 28, + "height": 30, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1969289836, + "version": 68, + "versionNonce": 925041772, + "isDeleted": false, + "boundElementIds": [ + "oS5EoxpRcdxtQaPFqgb0C", + "gzSh0gWqK9jTyhyJJwiE4" + ] + }, + { + "id": "gzSh0gWqK9jTyhyJJwiE4", + "type": "arrow", + "x": 627.0116330887658, + "y": 162.49345072070932, + "width": 121.98836691123415, + "height": 92.50654927929068, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1789840620, + "version": 245, + "versionNonce": 63883348, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 8.988366911234152, + 27.50654927929068 + ], + [ + 70.98836691123415, + 84.50654927929068 + ], + [ + 121.98836691123415, + 92.50654927929068 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "focus": 0.22374790285322452, + "gap": 11.020766037800525, + "elementId": "UmD9_6oyxNSW6yuGZY8IB" + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "VjksbJbEqvSaZ9W-D7hk_", + "type": "rectangle", + "x": 863, + "y": 184.79127997160316, + "width": 135.19501164713662, + "height": 112.79126685989687, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1805627476, + "version": 353, + "versionNonce": 886219372, + "isDeleted": false, + "boundElementIds": [ + "_PahqQ3MPHbJZGP4o7EI4", + "Zdj9xJJR5iOOBBt8XX_31", + "O1eADCqD99jWoXEISG8az", + "oS5EoxpRcdxtQaPFqgb0C" + ] + }, + { + "id": "3nMCmci-caTivXqYkNBXC", + "type": "line", + "x": 864.6797042146732, + "y": 185, + "width": 133.64992579974077, + "height": 111.24618101250095, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1315866068, + "version": 316, + "versionNonce": 821037652, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 133.64992579974077, + 111.24618101250095 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "IVIPKz7qs2jUwxj43QqBc", + "type": "ellipse", + "x": 1037, + "y": 220, + "width": 28, + "height": 30, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1808182100, + "version": 382, + "versionNonce": 448734420, + "isDeleted": false, + "boundElementIds": [ + "oS5EoxpRcdxtQaPFqgb0C", + "7qVCAzvjoHRuJ6dolYlZl", + "cMta3VYfFHdO_AJQPg8Z0" + ] + }, + { + "id": "cMta3VYfFHdO_AJQPg8Z0", + "type": "arrow", + "x": 1027.008433951235, + "y": 237.10583353481303, + "width": 57.00843395123502, + "height": 1.10583353481303, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1174282452, + "version": 98, + "versionNonce": 1339114092, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + -57.00843395123502, + -1.10583353481303 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "IVIPKz7qs2jUwxj43QqBc", + "focus": -0.17138625905684743, + "gap": 10.076610005187154 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "Yct9eVL6YJSR-t_WtPEl0", + "type": "rectangle", + "x": 1231, + "y": 176.79127997160316, + "width": 135.19501164713662, + "height": 112.79126685989687, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1729114732, + "version": 423, + "versionNonce": 211332332, + "isDeleted": false, + "boundElementIds": [ + "_PahqQ3MPHbJZGP4o7EI4", + "Zdj9xJJR5iOOBBt8XX_31", + "O1eADCqD99jWoXEISG8az", + "oS5EoxpRcdxtQaPFqgb0C" + ] + }, + { + "id": "QADKFk_tZI5W9pAoTNYJM", + "type": "line", + "x": 1232.6797042146732, + "y": 177, + "width": 133.64992579974077, + "height": 111.24618101250095, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1226941780, + "version": 387, + "versionNonce": 675669972, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 133.64992579974077, + 111.24618101250095 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "a2dtgBfKdPQaTPZ20S4Bx", + "type": "ellipse", + "x": 1154, + "y": 216, + "width": 28, + "height": 30, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1834151532, + "version": 531, + "versionNonce": 1476412524, + "isDeleted": false, + "boundElementIds": [ + "oS5EoxpRcdxtQaPFqgb0C", + "7qVCAzvjoHRuJ6dolYlZl", + "-z8K51ZOL-o_xH1dZWVUp", + "3dJJp-spOfCkGq9Y680IY" + ] + }, + { + "id": "3dJJp-spOfCkGq9Y680IY", + "type": "arrow", + "x": 1191.7718647013971, + "y": 235.5616527134353, + "width": 143.22813529860287, + "height": 88.43834728656469, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1086038380, + "version": 196, + "versionNonce": 920978132, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 70.22813529860287, + 15.438347286564692 + ], + [ + 143.22813529860287, + 88.43834728656469 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "a2dtgBfKdPQaTPZ20S4Bx", + "focus": -0.043373062899233546, + "gap": 10.171645790728416 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "gridSize": null + } +} \ No newline at end of file diff --git a/assets/5210_0.png b/assets/5210_0.png new file mode 100644 index 0000000000000000000000000000000000000000..10d0036db0ada5aa0645ad12f69fc7e6404353a2 GIT binary patch literal 40038 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 grid.length) return y; + // 左右边界 + if (x < 0 || y < 0 || y >= grid[0].length) return -1; + + // 挡板 + let board = grid[x][y]; + let res = -1; + + // 从上方掉落的,看挡板方向,小球只能滚向左侧或者右侧 + if (dir === 'TOP') { + if (board === 1) res = roll(grid, x, y + 1, 'LEFT'); + else if (board === -1) res = roll(grid, x, y - 1, 'RIGHT'); + } + // 从左右两侧进入的,看挡板方向,小球只能卡在当前格子或者往下掉 + else if ( + (dir === 'LEFT' && board === -1) || + (dir === 'RIGHT' && board === 1) + ) + res = -1; + else res = roll(grid, x + 1, y, 'TOP'); + + return res; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From d3f83ba2fe0d0a8dd5da36d6b53a4c354cfb0207 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 28 Dec 2020 17:56:57 +0800 Subject: [PATCH 08/44] =?UTF-8?q?add:=20378.=20=E6=9C=89=E5=BA=8F=E7=9F=A9?= =?UTF-8?q?=E9=98=B5=E4=B8=AD=E7=AC=ACK=E5=B0=8F=E7=9A=84=E5=85=83?= =?UTF-8?q?=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- assets/378_0.excalidraw | 1454 +++++++++++++++++ assets/378_0.png | Bin 0 -> 110806 bytes medium/day-50.md | 79 - medium/day-51.md | 69 - .../54.kth-largest-element-in-an-array.md | 0 medium/heap/56.merge-k-sorted-lists.md | 242 +++ ...kth-smallest-element-in-a-sorted-matrix.md | 201 +++ 8 files changed, 1900 insertions(+), 149 deletions(-) create mode 100644 assets/378_0.excalidraw create mode 100644 assets/378_0.png delete mode 100644 medium/day-50.md delete mode 100644 medium/day-51.md rename basic/hashmap/ext-kth-largest-element-in-an-array.md => medium/heap/54.kth-largest-element-in-an-array.md (100%) create mode 100644 medium/heap/56.merge-k-sorted-lists.md create mode 100644 medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md diff --git a/README.md b/README.md index c14d3e4..cbdd2c9 100644 --- a/README.md +++ b/README.md @@ -246,7 +246,9 @@ ### 堆 -- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/kth-largest-element-in-an-array.md) +- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) +- [x] [【day-56】23.合并K个升序链表](./medium/heap/56.merge-k-sorted-lists.md) +- [x] [【day-58】378. 有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) ## 专题篇 diff --git a/assets/378_0.excalidraw b/assets/378_0.excalidraw new file mode 100644 index 0000000..1ea4be8 --- /dev/null +++ b/assets/378_0.excalidraw @@ -0,0 +1,1454 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "DKNHh0BrpH__tl5r3M_AL", + "type": "text", + "x": 643, + "y": 240.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1705238440, + "version": 72, + "versionNonce": 426689240, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "COcAP70RvJjnh-EJFlWrY", + "type": "text", + "x": 569, + "y": 265.5, + "width": 35, + "height": 24, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 140094120, + "version": 103, + "versionNonce": 200636072, + "isDeleted": false, + "boundElementIds": null, + "text": "k=5", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "MQwjVigH5ZZtwFkCEC2ul", + "type": "text", + "x": 491, + "y": 366.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1793894360, + "version": 60, + "versionNonce": 91513256, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "rEBTz8OtS9Hxe7UHa2QSh", + "type": "ellipse", + "x": 519, + "y": 365, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 62516440, + "version": 63, + "versionNonce": 516549800, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "mEZP7ITY0rHdzQ5SmnCMr", + "type": "ellipse", + "x": 525, + "y": 392, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2090242520, + "version": 92, + "versionNonce": 724965288, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "KPj6WdhU5B-Ux_ZSLc7nW", + "type": "ellipse", + "x": 522, + "y": 416, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1553372888, + "version": 110, + "versionNonce": 1323623080, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "h7NvS8feyuuWXUAOzbciz", + "type": "rectangle", + "x": 741, + "y": 383, + "width": 189, + "height": 33, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 676199384, + "version": 112, + "versionNonce": 1216499112, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "p-SEbbCxcj8NUGlNgdrwm", + "type": "ellipse", + "x": 752, + "y": 386, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 835764440, + "version": 139, + "versionNonce": 557471912, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "0_9IvaPoM2TNndZGy7wN7", + "type": "text", + "x": 761, + "y": 386.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1756554712, + "version": 53, + "versionNonce": 1555628968, + "isDeleted": false, + "boundElementIds": null, + "text": "1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "TZ8CbNRWOAP2PdxIhFoPq", + "type": "text", + "x": 494, + "y": 482.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1163618728, + "version": 88, + "versionNonce": 1604805848, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "F9InYUQvwXyy5CPMzjhQa", + "type": "ellipse", + "x": 567, + "y": 480, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1552938152, + "version": 117, + "versionNonce": 1813318104, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "tqqp1-QFhoUZSrZsFNiAi", + "type": "ellipse", + "x": 528, + "y": 508, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1392189352, + "version": 120, + "versionNonce": 1166413528, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "cMkoKy-zgtOkEerjDWK4D", + "type": "ellipse", + "x": 525, + "y": 532, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1221126824, + "version": 138, + "versionNonce": 881751000, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "LWk9uiDNPa3RM_RaeS1-A", + "type": "rectangle", + "x": 744, + "y": 499, + "width": 189, + "height": 33, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2024101288, + "version": 140, + "versionNonce": 1329739992, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "nXFR9nLOKxL6Dc9XnXa1b", + "type": "ellipse", + "x": 755, + "y": 502, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1740398760, + "version": 169, + "versionNonce": 1228234200, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "CNjh6CzCHZEaHsmsHnC3W", + "type": "text", + "x": 764, + "y": 502.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 364514216, + "version": 83, + "versionNonce": 1132192472, + "isDeleted": false, + "boundElementIds": null, + "text": "1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "4jYXtLtG_9AjUgxcvgFFj", + "type": "ellipse", + "x": 793, + "y": 503, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 751457960, + "version": 175, + "versionNonce": 480888792, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "8tnW3ELsgx_4dba2iMfb5", + "type": "text", + "x": 802, + "y": 503.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 832127400, + "version": 92, + "versionNonce": 1087573208, + "isDeleted": false, + "boundElementIds": null, + "text": "5", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "kNCk6FNniArSr5d-ZzV4b", + "type": "text", + "x": 497, + "y": 597.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2007906472, + "version": 123, + "versionNonce": 1273824728, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "wWOu1oIjWUsRBgJ4srUPF", + "type": "ellipse", + "x": 570, + "y": 595, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2041635752, + "version": 152, + "versionNonce": 1627294424, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "2E5K6fqYws7FSoTZfK-U_", + "type": "ellipse", + "x": 530, + "y": 620, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 472264360, + "version": 211, + "versionNonce": 1133998040, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "jmMkfttBszZGAC9WNsXQq", + "type": "ellipse", + "x": 528, + "y": 647, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2008684968, + "version": 173, + "versionNonce": 197899480, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "QTPHt-r_kdF6LiLQ0wSAq", + "type": "rectangle", + "x": 747, + "y": 614, + "width": 189, + "height": 33, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 798532776, + "version": 175, + "versionNonce": 791632344, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "uR7_QPHJj2taDLr5li-9D", + "type": "ellipse", + "x": 758, + "y": 617, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 560844712, + "version": 204, + "versionNonce": 1356226264, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "aQgZBheZvHSLr7HjqaMPo", + "type": "text", + "x": 767, + "y": 617.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 358980264, + "version": 118, + "versionNonce": 290767832, + "isDeleted": false, + "boundElementIds": null, + "text": "1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "oAwX_utaMqkIcgVS9MvtK", + "type": "ellipse", + "x": 796, + "y": 618, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1848378792, + "version": 210, + "versionNonce": 1589545176, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "7IWNB6IHnSxNeonuFzVWv", + "type": "text", + "x": 805, + "y": 618.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1491931304, + "version": 127, + "versionNonce": 1151839704, + "isDeleted": false, + "boundElementIds": null, + "text": "5", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "M_9-2BgMkKHUVgi8bzO81", + "type": "ellipse", + "x": 834, + "y": 617, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2102705064, + "version": 231, + "versionNonce": 1009005272, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "tYs9PhohqnqAeU_-gL6FY", + "type": "text", + "x": 837.5, + "y": 617.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 764348072, + "version": 12, + "versionNonce": 2076710872, + "isDeleted": false, + "boundElementIds": null, + "text": "10", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "HV880PwNtT9UJ-DYJ_lmw", + "type": "text", + "x": 493, + "y": 703.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1172885416, + "version": 158, + "versionNonce": 93019864, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "IbXOpRHtTJYaC9khFUn48", + "type": "ellipse", + "x": 566, + "y": 701, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1921030824, + "version": 187, + "versionNonce": 1734984664, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "DAycPAICPcnQTHWV46hXR", + "type": "ellipse", + "x": 573, + "y": 727, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1877411240, + "version": 270, + "versionNonce": 708020440, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "nGrqkadrrdJPnsG156xIV", + "type": "ellipse", + "x": 524, + "y": 753, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1799884968, + "version": 208, + "versionNonce": 1501343192, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "1Mp0lHsdBUvjSGeM5thze", + "type": "rectangle", + "x": 743, + "y": 720, + "width": 189, + "height": 33, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 206551976, + "version": 210, + "versionNonce": 1851339480, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "5AjQeHgjCr4Dp28AhtZIc", + "type": "ellipse", + "x": 754, + "y": 723, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 623511208, + "version": 239, + "versionNonce": 526194648, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "0RiRSsPDYqdiWh64Rmuoo", + "type": "text", + "x": 763, + "y": 723.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1652748712, + "version": 153, + "versionNonce": 815553752, + "isDeleted": false, + "boundElementIds": null, + "text": "1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "I9OOfRS6CPND1w7h_hnPJ", + "type": "ellipse", + "x": 792, + "y": 724, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2072411304, + "version": 245, + "versionNonce": 1135280600, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "5eUqJ8cJGxyPmDqRW4bQK", + "type": "text", + "x": 801, + "y": 724.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1642112936, + "version": 162, + "versionNonce": 664602328, + "isDeleted": false, + "boundElementIds": null, + "text": "5", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "whh99jDR_ar1ptnxb-214", + "type": "ellipse", + "x": 830, + "y": 723, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1908241064, + "version": 268, + "versionNonce": 688286680, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "7q0XD60OQtwrHL8Xal2w1", + "type": "text", + "x": 833.5, + "y": 723.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 566812072, + "version": 49, + "versionNonce": 1643851992, + "isDeleted": false, + "boundElementIds": null, + "text": "10", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "uoU45fUW_Kf-65PLe-i3a", + "type": "ellipse", + "x": 867, + "y": 724, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 858712232, + "version": 288, + "versionNonce": 168777176, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "R_aJ4hnbz8eeYdbhPAi1-", + "type": "text", + "x": 870.5, + "y": 724.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1637585832, + "version": 73, + "versionNonce": 1180097240, + "isDeleted": false, + "boundElementIds": null, + "text": "12", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "A689gkWJlvbjY_TBPMU8r", + "type": "text", + "x": 493, + "y": 804.5, + "width": 176, + "height": 72, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 427738328, + "version": 179, + "versionNonce": 856745944, + "isDeleted": false, + "boundElementIds": null, + "text": " [[1, 5, 11],\n [10, 12, 13],\n [12, 13, 15]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "id": "cL0VyBx4O-hp_ODdekk_o", + "type": "ellipse", + "x": 566, + "y": 802, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 362021544, + "version": 208, + "versionNonce": 1890853288, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "xEwfh4LaErBv9nv7g8kAO", + "type": "ellipse", + "x": 573, + "y": 828, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 602309800, + "version": 291, + "versionNonce": 1029057752, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "c0CJdr527qm2gzH7otGv7", + "type": "ellipse", + "x": 524, + "y": 854, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1078562776, + "version": 231, + "versionNonce": 1857681832, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "4BpMBWGd0oZF90fiYh09k", + "type": "rectangle", + "x": 743, + "y": 821, + "width": 189, + "height": 33, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 816164008, + "version": 231, + "versionNonce": 950718936, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "XHE78VCYbjY3uwmbn7O_5", + "type": "ellipse", + "x": 750, + "y": 823, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 626235608, + "version": 275, + "versionNonce": 54491096, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "hbZqwIMEWm-PEMEldu1x4", + "type": "text", + "x": 759, + "y": 823.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 370851288, + "version": 189, + "versionNonce": 1819709864, + "isDeleted": false, + "boundElementIds": null, + "text": "1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "bthDXQPTLG_ZkPlmsY3Ls", + "type": "ellipse", + "x": 788, + "y": 824, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "#15aabf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 751332824, + "version": 281, + "versionNonce": 691191000, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "Gam-DIL2hUofnS61ZfZQm", + "type": "text", + "x": 797, + "y": 824.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 98356904, + "version": 198, + "versionNonce": 1174805672, + "isDeleted": false, + "boundElementIds": null, + "text": "5", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "m5geP-WsX9mace09od74-", + "type": "ellipse", + "x": 823, + "y": 822, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1524705240, + "version": 296, + "versionNonce": 440426200, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "1SjW5wJQXxNkm4ks0c5G6", + "type": "text", + "x": 826.5, + "y": 822.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 18771160, + "version": 77, + "versionNonce": 1872468648, + "isDeleted": false, + "boundElementIds": null, + "text": "10", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "X_JSQpyiZI5_-hoZXwDCC", + "type": "ellipse", + "x": 860, + "y": 823, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "#82c91e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1042301912, + "version": 316, + "versionNonce": 494846936, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "7pMU3mgIbMKIvzZ95nmle", + "type": "text", + "x": 863.5, + "y": 823.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1707793368, + "version": 101, + "versionNonce": 295830952, + "isDeleted": false, + "boundElementIds": null, + "text": "12", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + }, + { + "id": "zcV7bM2hpQcMwDOzniPz3", + "type": "ellipse", + "x": 895, + "y": 822, + "width": 30, + "height": 25, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "#fd7e14", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2019934936, + "version": 299, + "versionNonce": 147893464, + "isDeleted": false, + "boundElementIds": null + }, + { + "id": "YYBUwKSzbxVujiZgKIMma", + "type": "text", + "x": 898.5, + "y": 822.5, + "width": 23, + "height": 24, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 200596440, + "version": 23, + "versionNonce": 729754792, + "isDeleted": false, + "boundElementIds": null, + "text": "12", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + } +} \ No newline at end of file diff --git a/assets/378_0.png b/assets/378_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b4619f1578273b18c97a57387909b3461a5a6ce5 GIT binary patch literal 110806 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 { - for (let i = cur; i < candidates.length; i++) { - if (candidates[i] > remain) continue - if (candidates[i] === candidates[i - 1] && i > cur) continue - - if (candidates[i] === remain) { - res.push([...arr, candidates[i]]) - return - } - - arr.push(candidates[i]) - helper(candidates, [...arr], remain - candidates[i], i + 1, res) - arr.pop() - } - } - - const res = [] - candidates.sort((a, b) => a - b) - helper(candidates, [], target, 0, res) - return res -} -``` diff --git a/medium/day-51.md b/medium/day-51.md deleted file mode 100644 index d1aa2a9..0000000 --- a/medium/day-51.md +++ /dev/null @@ -1,69 +0,0 @@ -# 47. 全排列 II - -https://leetcode-cn.com/problems/permutations-ii - -## 题目描述 - -``` -给定一个可包含重复数字的序列,返回所有不重复的全排列。 - -示例: - -输入: [1,1,2] -输出: -[ -[1,1,2], -[1,2,1], -[2,1,1] -] - -来源:力扣(LeetCode) -链接:https://leetcode-cn.com/problems/permutations-ii -著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 - - -``` - -## 思路 - -## 复杂度分析 - -- 时间复杂度: -- 空间复杂度: - -## 代码 - -JavaScript Code - -```js -/** - * @param {number[]} nums - * @return {number[][]} - */ -var permuteUnique = function (nums) { - const backtrack = (nums, path, res, visited) => { - if (path.length === nums.length) { - res.push(path); - return; - } - - for (let i = 0; i < nums.length; i++) { - if ( - visited[i] || - (i > 0 && nums[i] === nums[i - 1] && visited[i - 1]) - ) - continue; - visited[i] = true; - path.push(nums[i]); - backtrack(nums, [...path], res, visited); - path.pop(); - visited[i] = false; - } - }; - - const res = []; - nums.sort((a, b) => a - b); - backtrack(nums, [], res, Array(nums.length)); - return res; -}; -``` diff --git a/basic/hashmap/ext-kth-largest-element-in-an-array.md b/medium/heap/54.kth-largest-element-in-an-array.md similarity index 100% rename from basic/hashmap/ext-kth-largest-element-in-an-array.md rename to medium/heap/54.kth-largest-element-in-an-array.md diff --git a/medium/heap/56.merge-k-sorted-lists.md b/medium/heap/56.merge-k-sorted-lists.md new file mode 100644 index 0000000..1377b08 --- /dev/null +++ b/medium/heap/56.merge-k-sorted-lists.md @@ -0,0 +1,242 @@ +# 23. 合并K个升序链表 + +https://leetcode-cn.com/problems/merge-k-sorted-lists/ + +- [23. 合并K个升序链表](#23-合并k个升序链表) + - [题目描述](#题目描述) + - [方法1:顺序合并](#方法1顺序合并) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法2:顺序合并+堆](#方法2顺序合并堆) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + +## 题目描述 + +``` +给你一个链表数组,每个链表都已经按升序排列。 + +请你将所有链表合并到一个升序链表中,返回合并后的链表。 + +  + +示例 1: + +输入:lists = [[1,4,5],[1,3,4],[2,6]] +输出:[1,1,2,3,4,4,5,6] +解释:链表数组如下: +[ + 1->4->5, + 1->3->4, + 2->6 +] +将它们合并到一个有序链表中得到。 +1->1->2->3->4->4->5->6 +示例 2: + +输入:lists = [] +输出:[] +示例 3: + +输入:lists = [[]] +输出:[] +  + +提示: + +k == lists.length +0 <= k <= 10^4 +0 <= lists[i].length <= 500 +-10^4 <= lists[i][j] <= 10^4 +lists[i] 按 升序 排列 +lists[i].length 的总和不超过 10^4 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/merge-k-sorted-lists +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:顺序合并 + +### 思路 + +跟合并 `两个` 升序链表的基本思路是一样的,只不过每次操作需要比较多个链表头的值。 + +### 复杂度分析 + +- 时间复杂度:$O(k*n)$,k 是链表个数,n 是合并后链表的长度。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode[]} lists + * @return {ListNode} + */ +var mergeKLists = function (lists) { + if (!lists || !lists.length) return null; + + let dummy = new ListNode(); + let tail = dummy; + + while (!isEmpty(lists)) { + const min = getMin(lists); + tail.next = new ListNode(min.val); + tail = tail.next; + } + + return dummy.next; + + // ********************************************** + function getMin(lists) { + let minIndex = -1, + minNode = new ListNode(Infinity); + + for (let i = 0; i < lists.length; i++) { + const node = lists[i]; + if (node && node.val < minNode.val) { + minNode = node; + minIndex = i; + } + } + + lists[minIndex] = minNode.next; + return minNode; + } + + function isEmpty(lists) { + return lists.every(n => n === null); + } +}; +``` + +## 方法2:顺序合并+堆 + +### 思路 + +跟上一个方法思路一样,只不过使用了堆来找链表最小值。 + +### 复杂度分析 + +- 时间复杂度:$O(nlogk)$,k 是链表个数,n 是合并后链表的长度。 +- 空间复杂度:$O(k)$,k 是链表个数,堆的空间大小。 + +### 代码 + +JavaScript Code + +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode[]} lists + * @return {ListNode} + */ +var mergeKLists = function (lists) { + if (!lists || !lists.length) return null; + + let dummy = new ListNode(); + let tail = dummy; + + const heap = new MinHeap(lists.filter(Boolean), function comparator(inserted, compared) { + return inserted.val > compared.val; + }); + + while (heap.size() > 0) { + const min = heap.pop(); + tail.next = new ListNode(min.val); + tail = tail.next; + min.next && heap.insert(min.next) + } + + return dummy.next; +}; + +// ************************************************** + +class Heap { + constructor(list = [], comparator) { + this.list = list; + this.comparator = comparator; + + this.init(); + } + + init() { + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + insert(n) { + this.list.push(n); + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + peek() { + return this.list[0]; + } + + pop() { + const last = this.list.pop(); + if (this.size() === 0) return last; + const returnItem = this.list[0]; + this.list[0] = last; + this.heapify(this.list, this.size(), 0); + return returnItem; + } + + size() { + return this.list.length; + } +} + +class MinHeap extends Heap { + constructor(list, comparator) { + if (typeof comparator != 'function') { + comparator = function comparator(inserted, compared) { + return inserted > compared; + }; + } + super(list, comparator); + } + + heapify(arr, size, i) { + let smallest = i; + const left = Math.floor(i * 2 + 1); + const right = Math.floor(i * 2 + 2); + if (left < size && this.comparator(arr[smallest], arr[left])) + smallest = left; + if (right < size && this.comparator(arr[smallest], arr[right])) + smallest = right; + + if (smallest !== i) { + [arr[smallest], arr[i]] = [arr[i], arr[smallest]]; + this.heapify(arr, size, smallest); + } + } +} +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md b/medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md new file mode 100644 index 0000000..8d515aa --- /dev/null +++ b/medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md @@ -0,0 +1,201 @@ +# 378. 有序矩阵中第K小的元素 + +https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/ + +- [378. 有序矩阵中第K小的元素](#378-有序矩阵中第k小的元素) + - [题目描述](#题目描述) + - [方法1:归并排序](#方法1归并排序) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法2:归并排序+堆](#方法2归并排序堆) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + +## 题目描述 + +``` +给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 +请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。 + +  + +示例: + +matrix = [ + [ 1, 5, 9], + [10, 11, 13], + [12, 13, 15] +], +k = 8, + +返回 13。 +  + +提示: +你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2 。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:归并排序 + +### 思路 + +矩阵的每一行都是一个升序的数组,用合并多个有序数组的思路,找出前 k 个最小的元素就行。 + +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/378_0.png) + +用 n 个指针来记录每一行当前最小元素。 + +### 复杂度分析 + +- 时间复杂度:$O(k*n)$,n 是矩阵宽高,其中 k 最坏的情况下是 $n^2$,所以最坏的时间复杂度是 $O(n^3)$。 +- 空间复杂度:$O(n)$,指针数组的长度。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[][]} matrix + * @param {number} k + * @return {number} + */ +var kthSmallest = function (matrix, k) { + const rows = matrix.length; + const cols = matrix[0].length + const indices = Array(rows).fill(0); + + let kth; + while (k-- > 0) { + let min = Infinity + let minRow = -1 + for (let r = 0; r < rows; r++) { + if (indices[r] >= cols) continue + + const num = matrix[r][indices[r]]; + if (num <= min) { + min = num; + minRow = r + } + } + kth = min + indices[minRow]++; + } + return kth; +}; +``` + +## 方法2:归并排序+堆 + +### 思路 + +还是上一个方法的思路,只不过在寻找多行中的最小值时,不用循环查找,而是用堆将这个查找时间从 n 降到 logn。 + +### 复杂度分析 + +- 时间复杂度:$O(k*logn)$,n 是矩阵宽高,其中 k 最坏的情况下是 $n^2$,所以最坏的时间复杂度是 $O(n^2*logn)$。 +- 空间复杂度:$O(n)$,堆的大小。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[][]} matrix + * @param {number} k + * @return {number} + */ +var kthSmallest = function (matrix, k) { + const list = matrix.map((row, x) => [row[0], x, 0]); + // 堆中的数据结构是 [num, x, y] + const heap = new MinHeap(list, function comparator(inserted, compared) { + return inserted[0] > compared[0]; + }); + + while (k-- > 1) { + const [, x, y] = heap.pop(); + if (y < matrix[0].length - 1) { + heap.insert([matrix[x][y + 1], x, y + 1]); + } + } + return heap.pop()[0]; +}; + +// ************************************************** + +class Heap { + constructor(list = [], comparator) { + this.list = list; + this.comparator = comparator; + + this.init(); + } + + init() { + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + insert(n) { + this.list.push(n); + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + peek() { + return this.list[0]; + } + + pop() { + const last = this.list.pop(); + if (this.size() === 0) return last; + const returnItem = this.list[0]; + this.list[0] = last; + this.heapify(this.list, this.size(), 0); + return returnItem; + } + + size() { + return this.list.length; + } +} + +class MinHeap extends Heap { + constructor(list, comparator) { + if (typeof comparator != 'function') { + comparator = function comparator(inserted, compared) { + return inserted > compared; + }; + } + super(list, comparator); + } + + heapify(arr, size, i) { + let smallest = i; + const left = Math.floor(i * 2 + 1); + const right = Math.floor(i * 2 + 2); + if (left < size && this.comparator(arr[smallest], arr[left])) + smallest = left; + if (right < size && this.comparator(arr[smallest], arr[right])) + smallest = right; + + if (smallest !== i) { + [arr[smallest], arr[i]] = [arr[i], arr[smallest]]; + this.heapify(arr, size, smallest); + } + } +} +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From dfd2a11e35bcc5fd1b915bb1c9686164b5367249 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 28 Dec 2020 17:59:51 +0800 Subject: [PATCH 09/44] =?UTF-8?q?add:=205.=E6=9C=80=E9=95=BF=E5=9B=9E?= =?UTF-8?q?=E6=96=87=E5=AD=90=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + extensions/5.longest-palindromic-substring.md | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 extensions/5.longest-palindromic-substring.md diff --git a/README.md b/README.md index cbdd2c9..4a61849 100644 --- a/README.md +++ b/README.md @@ -327,4 +327,5 @@ ## 其他 - [x] [77.组合](./extensions/77.combination.md) +- [x] [5.最长回文子串](./extensions/5.longest-palindromic-substring.md) - [ ] [面试题 04.09. 二叉搜索树序列](./extensions/04.09.bst-sequences-lcci.md) diff --git a/extensions/5.longest-palindromic-substring.md b/extensions/5.longest-palindromic-substring.md new file mode 100644 index 0000000..2465e61 --- /dev/null +++ b/extensions/5.longest-palindromic-substring.md @@ -0,0 +1,80 @@ +# 5. 最长回文子串 + +https://leetcode-cn.com/problems/longest-palindromic-substring/ + +- [5. 最长回文子串](#5-最长回文子串) + - [题目描述](#题目描述) + - [方法1:中心扩展](#方法1中心扩展) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 + +示例 1: + +输入: "babad" +输出: "bab" +注意: "aba" 也是一个有效答案。 +示例 2: + +输入: "cbbd" +输出: "bb" + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/longest-palindromic-substring +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:中心扩展 + +### 思路 + +最简单的思路,以 `单个` 或者 `两个一组相同` 的字符为中心,向左右两侧扩展,找到以这个(或者这两个)字符为中心的最长回文子串。接着对 `s` 中的所有字符重复这个操作,记录这个过程中找到的最长回文子串。 + +### 复杂度分析 + +- 时间复杂度:$O(N^2)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {string} s + * @return {string} + */ +var longestPalindrome = function (s) { + // 中心扩展,有两种情况: + // 1. 对于每个单个字符,向两侧扩展 + // 2. 对于每组两个相同的字符,向两侧扩展 + + let ans = ''; + for (let i = 0; i < s.length; i++) { + const str1 = expand(s, i, i); + if (str1.length > ans.length) ans = str1; + + if (s[i] === s[i + 1]) { + const str2 = expand(s, i, i + 1); + if (str2.length > ans.length) ans = str2; + } + } + return ans; + + // ************************************************** + function expand(s, l, r) { + while (l >= 0 && r < s.length && s[l] === s[r]) { + l--; + r++; + } + return s.slice(l + 1, r); + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 6662666413b9abb97d2a8f2d7124a2acea985ca5 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 28 Dec 2020 18:13:55 +0800 Subject: [PATCH 10/44] =?UTF-8?q?add:=20451.=20=E6=A0=B9=E6=8D=AE=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E5=87=BA=E7=8E=B0=E9=A2=91=E7=8E=87=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + .../heap/57.sort-characters-by-frequency.md | 166 ++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 medium/heap/57.sort-characters-by-frequency.md diff --git a/README.md b/README.md index 4a61849..f7632b4 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,7 @@ - [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) - [x] [【day-56】23.合并K个升序链表](./medium/heap/56.merge-k-sorted-lists.md) +- [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) - [x] [【day-58】378. 有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) ## 专题篇 diff --git a/medium/heap/57.sort-characters-by-frequency.md b/medium/heap/57.sort-characters-by-frequency.md new file mode 100644 index 0000000..5464b8a --- /dev/null +++ b/medium/heap/57.sort-characters-by-frequency.md @@ -0,0 +1,166 @@ +# 451. 根据字符出现频率排序 + +https://leetcode-cn.com/problems/sort-characters-by-frequency/ + +- [451. 根据字符出现频率排序](#451-根据字符出现频率排序) + - [题目描述](#题目描述) + - [方法1:哈希表+堆](#方法1哈希表堆) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 + +示例 1: + +输入: +"tree" + +输出: +"eert" + +解释: +'e'出现两次,'r'和't'都只出现一次。 +因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。 +示例 2: + +输入: +"cccaaa" + +输出: +"cccaaa" + +解释: +'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。 +注意"cacaca"是不正确的,因为相同的字母必须放在一起。 +示例 3: + +输入: +"Aabb" + +输出: +"bbAa" + +解释: +此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。 +注意'A'和'a'被认为是两种不同的字符。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/sort-characters-by-frequency +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:哈希表+堆 + +### 思路 + +- 用哈希表来记录每个字符的出现次数 +- 以字符出现次数建立一个大顶堆 +- 一边弹出堆顶,一边构建新的字符串 + +### 复杂度分析 + +- 时间复杂度:$O(n+klogk)$,n 是字符串的长度,k 是字符串中字符集的大小。 +- 空间复杂度:$O(k)$,k 是字符串中字符集的大小,堆的大小。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {string} s + * @return {string} + */ +var frequencySort = function (s) { + const map = {} + + for (let i = 0; i < s.length; i++) { + const c = s[i]; + map[c] = (map[c] || 0) + 1 + } + + // 堆的数据结构 [char, count] + const list = Object.keys(map).map(c => [c, map[c]]) + const heap = new MaxHeap(list, function comparator(inserted, compared) { + return inserted[1] < compared[1]; + }); + + let str = '' + while (heap.size() > 0) { + const [char, cnt] = heap.pop(); + str += char.repeat(cnt) + } + return str +}; + +// ************************************************** + +class Heap { + constructor(list = [], comparator) { + this.list = list; + this.comparator = comparator; + + this.init(); + } + + init() { + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + insert(n) { + this.list.push(n); + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + peek() { + return this.list[0]; + } + + pop() { + const last = this.list.pop(); + if (this.size() === 0) return last; + const returnItem = this.list[0]; + this.list[0] = last; + this.heapify(this.list, this.size(), 0); + return returnItem; + } + + size() { + return this.list.length; + } +} + +class MaxHeap extends Heap { + constructor(list, comparator) { + super(list, comparator); + } + + heapify(arr, size, i) { + let largest = i; + const left = Math.floor(i * 2 + 1); + const right = Math.floor(i * 2 + 2); + + if (left < size && this.comparator(arr[largest], arr[left])) + largest = left; + if (right < size && this.comparator(arr[largest], arr[right])) + largest = right; + + if (largest !== i) { + [arr[largest], arr[i]] = [arr[i], arr[largest]]; + this.heapify(arr, size, largest); + } + } +} +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From c0bb406f62538fe52cff4fa3e52133492bc7db39 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 28 Dec 2020 18:25:42 +0800 Subject: [PATCH 11/44] =?UTF-8?q?add:=201046.=E6=9C=80=E5=90=8E=E4=B8=80?= =?UTF-8?q?=E5=9D=97=E7=9F=B3=E5=A4=B4=E7=9A=84=E9=87=8D=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + medium/heap/55.last-stone-weight.md | 148 ++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 medium/heap/55.last-stone-weight.md diff --git a/README.md b/README.md index f7632b4..7bf1406 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,7 @@ ### 堆 - [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) +- [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) - [x] [【day-56】23.合并K个升序链表](./medium/heap/56.merge-k-sorted-lists.md) - [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) - [x] [【day-58】378. 有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) diff --git a/medium/heap/55.last-stone-weight.md b/medium/heap/55.last-stone-weight.md new file mode 100644 index 0000000..7fda019 --- /dev/null +++ b/medium/heap/55.last-stone-weight.md @@ -0,0 +1,148 @@ +# 1046. 最后一块石头的重量 + +https://leetcode-cn.com/problems/last-stone-weight/ + +- [1046. 最后一块石头的重量](#1046-最后一块石头的重量) + - [题目描述](#题目描述) + - [方法1:大顶堆](#方法1大顶堆) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +有一堆石头,每块石头的重量都是正整数。 + +每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: + +如果 x == y,那么两块石头都会被完全粉碎; +如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。 +最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。 + +  + +示例: + +输入:[2,7,4,1,8,1] +输出:1 +解释: +先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1], +再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1], +接着是 2 和 1,得到 1,所以数组转换为 [1,1,1], +最后选出 1 和 1,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。 +  + +提示: + +1 <= stones.length <= 30 +1 <= stones[i] <= 1000 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/last-stone-weight +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:大顶堆 + +### 思路 + +直接用大顶堆来模拟粉碎石头的游戏。 + +### 复杂度分析 + +- 时间复杂度:$O(nlogn)$,n 是数组大小,最坏的情况是,每回合粉碎两块石头之后,都有一颗新的小石头生成。 +- 空间复杂度:$O(n)$,n 是数组大小。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} stones + * @return {number} + */ +var lastStoneWeight = function(stones) { + const heap = new MaxHeap(stones); + + while (heap.size() > 1) { + const first = heap.pop(); + const second = heap.pop(); + if (first > second) heap.insert(first - second) + } + return heap.size() ? heap.pop() : 0; +}; + +// ************************************************** + +class Heap { + constructor(list = [], comparator) { + this.list = list; + this.comparator = comparator; + + this.init(); + } + + init() { + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + insert(n) { + this.list.push(n); + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + peek() { + return this.list[0]; + } + + pop() { + const last = this.list.pop(); + if (this.size() === 0) return last; + const returnItem = this.list[0]; + this.list[0] = last; + this.heapify(this.list, this.size(), 0); + return returnItem; + } + + size() { + return this.list.length; + } +} + +class MaxHeap extends Heap { + constructor(list, comparator) { + if (typeof comparator != 'function') { + comparator = function comparator(inserted, compared) { + return inserted < compared; + }; + } + super(list, comparator); + } + + heapify(arr, size, i) { + let largest = i; + const left = Math.floor(i * 2 + 1); + const right = Math.floor(i * 2 + 2); + + if (left < size && this.comparator(arr[largest], arr[left])) + largest = left; + if (right < size && this.comparator(arr[largest], arr[right])) + largest = right; + + if (largest !== i) { + [arr[largest], arr[i]] = [arr[i], arr[largest]]; + this.heapify(arr, size, largest); + } + } +} +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 8b25c042cfe0897cdcbba3a22405d0e7535c04fd Mon Sep 17 00:00:00 2001 From: suukii Date: Tue, 29 Dec 2020 11:42:29 +0800 Subject: [PATCH 12/44] =?UTF-8?q?add:=201054.=E8=B7=9D=E7=A6=BB=E7=9B=B8?= =?UTF-8?q?=E7=AD=89=E7=9A=84=E6=9D=A1=E5=BD=A2=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- medium/heap/59.distant-barcodes.md | 268 +++++++++++++++++++++++++++++ 2 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 medium/heap/59.distant-barcodes.md diff --git a/README.md b/README.md index 7bf1406..6ed42e6 100644 --- a/README.md +++ b/README.md @@ -250,7 +250,8 @@ - [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) - [x] [【day-56】23.合并K个升序链表](./medium/heap/56.merge-k-sorted-lists.md) - [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) -- [x] [【day-58】378. 有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) +- [x] [【day-58】378.有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) +- [x] [【day-59】1054.距离相等的条形码](./medium/heap/59.distant-barcodes.md) ## 专题篇 diff --git a/medium/heap/59.distant-barcodes.md b/medium/heap/59.distant-barcodes.md new file mode 100644 index 0000000..ed651ad --- /dev/null +++ b/medium/heap/59.distant-barcodes.md @@ -0,0 +1,268 @@ +# 1054. 距离相等的条形码 + +https://leetcode-cn.com/problems/distant-barcodes/ + +- [1054. 距离相等的条形码](#1054-距离相等的条形码) + - [题目描述](#题目描述) + - [方法1:直接排序](#方法1直接排序) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法2:堆排序](#方法2堆排序) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + - [方法3](#方法3) + - [思路](#思路-2) + - [复杂度分析](#复杂度分析-2) + - [代码](#代码-2) + +## 题目描述 + +``` +在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 + +请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 + +  + +示例 1: + +输入:[1,1,1,2,2,2] +输出:[2,1,2,1,2,1] +示例 2: + +输入:[1,1,1,1,2,2,3,3] +输出:[1,3,1,3,2,1,2,1] +  + +提示: + +1 <= barcodes.length <= 10000 +1 <= barcodes[i] <= 10000 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/distant-barcodes +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:直接排序 + +### 思路 + +- 统计条形码的出现次数,按出现次数排序 +- 取出现次数最多的条形码,填充偶数位(0, 2, 4...) +- 重复上一步骤直到偶数位填充完毕,然后开始填充奇数位(1, 3, 5...) + +### 复杂度分析 + +- 时间复杂度:$O(NlogN)$,N 是 barcodes 的长度,统计条形码出现次数的时间是 $O(N)$,排序时间是 $O(klogk)$,k 是条形码总数,k 最坏情况下是 N。 +- 空间复杂度:$O(N)$,哈希表的空间,最坏的情况是每个条形码都不一样。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} barcodes + * @return {number[]} + */ +var rearrangeBarcodes = function (barcodes) { + const map = {}; + + for (let i = 0; i < barcodes.length; i++) { + const barcode = barcodes[i]; + map[barcode] = (map[barcode] || 0) + 1; + } + + const list = Object.keys(map).map(b => [Number(b), map[b]]); + list.sort((a, b) => a[1] - b[1]) + + const res = Array(barcodes.length); + let i = 0; + + while (list.length) { + let [barcode, count] = list.pop(); + + while (count-- > 0) { + if (i >= barcodes.length) i = 1; + + res[i] = barcode; + i += 2; + } + } + return res; +}; +``` + +## 方法2:堆排序 + +### 思路 + +- 统计条形码的出现次数,建堆 +- 从堆中取出现次数最多的条形码,填充偶数位(0, 2, 4...) +- 重复上一步骤直到偶数位填充完毕,然后开始填充奇数位(1, 3, 5...) + +### 复杂度分析 + +- 时间复杂度:$O(NlogN)$,N 是 barcodes 的长度,统计条形码出现次数的时间是 $O(N)$,每个条形码入堆出堆一次,时间是 $O(NlogN)$。 +- 空间复杂度:$O(N)$,哈希表的空间。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} barcodes + * @return {number[]} + */ +var rearrangeBarcodes = function (barcodes) { + const map = {}; + + for (let i = 0; i < barcodes.length; i++) { + const barcode = barcodes[i]; + map[barcode] = (map[barcode] || 0) + 1; + } + + // 堆的数据结构 [barcode, count] + const list = Object.keys(map).map(b => [Number(b), map[b]]); + const heap = new MaxHeap(list, function comparator(inserted, compared) { + return inserted[1] < compared[1]; + }); + + const res = Array(barcodes.length); + let i = 0; + + while (heap.size() > 0) { + let [barcode, count] = heap.pop(); + + while (count-- > 0) { + if (i >= barcodes.length) i = 1; + + res[i] = barcode; + i += 2; + } + } + return res; +}; + +// ************************************************** + +class Heap { + constructor(list = [], comparator) { + this.list = list; + this.comparator = comparator; + + this.init(); + } + + init() { + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + insert(n) { + this.list.push(n); + const size = this.size(); + for (let i = Math.floor(size / 2) - 1; i >= 0; i--) { + this.heapify(this.list, size, i); + } + } + + peek() { + return this.list[0]; + } + + pop() { + const last = this.list.pop(); + if (this.size() === 0) return last; + const returnItem = this.list[0]; + this.list[0] = last; + this.heapify(this.list, this.size(), 0); + return returnItem; + } + + size() { + return this.list.length; + } +} + +class MaxHeap extends Heap { + constructor(list, comparator) { + super(list, comparator); + } + + heapify(arr, size, i) { + let largest = i; + const left = Math.floor(i * 2 + 1); + const right = Math.floor(i * 2 + 2); + + if (left < size && this.comparator(arr[largest], arr[left])) + largest = left; + if (right < size && this.comparator(arr[largest], arr[right])) + largest = right; + + if (largest !== i) { + [arr[largest], arr[i]] = [arr[i], arr[largest]]; + this.heapify(arr, size, largest); + } + } +} +``` + +## 方法3 + +### 思路 + +- 统计条形码的出现次数,建堆 +- 每次从堆中取两个出现次数最多的条形码,将它们加入排列结果中,然后数量分别减一后重新入堆 +- 直到堆中元素少于两个 + +### 复杂度分析 + +- 时间复杂度:$O(NlogN)$,N 是 barcodes 的长度,统计条形码出现次数的时间是 $O(N)$,每个条形码入堆出堆一次,时间是 $O(NlogN)$。 +- 空间复杂度:$O(N)$,哈希表的空间,最坏的情况是每个条形码都不一样。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} barcodes + * @return {number[]} + */ +var rearrangeBarcodes = function (barcodes) { + const map = {}; + + for (let i = 0; i < barcodes.length; i++) { + const barcode = barcodes[i]; + map[barcode] = (map[barcode] || 0) + 1; + } + + // 堆的数据结构 [barcode, count] + const list = Object.keys(map).map(b => [Number(b), map[b]]); + const heap = new MaxHeap(list, function comparator(inserted, compared) { + return inserted[1] < compared[1]; + }); + + const res = []; + while (heap.size() > 1) { + let [b1, cnt1] = heap.pop(); + let [b2, cnt2] = heap.pop(); + res.push(b1, b2) + if (--cnt1 > 0) heap.insert([b1, cnt1]) + if (--cnt2 > 0) heap.insert([b2, cnt2]) + } + if (heap.size()) { + res.push(heap.pop()[0]); + } + return res +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 987a17241f7ee55211704ae5cde7661ab8c52ce1 Mon Sep 17 00:00:00 2001 From: suukii Date: Wed, 30 Dec 2020 10:10:57 +0800 Subject: [PATCH 13/44] =?UTF-8?q?add:=20543.=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E7=9A=84=E7=9B=B4=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + .../ext-diameter-of-binary-tree.md | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 basic/binary-tree/ext-diameter-of-binary-tree.md diff --git a/README.md b/README.md index 6ed42e6..ca21c61 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,7 @@ - [x] [404.左叶子之和](./basic/binary-tree/ext-sum-of-left-leaves.md) - [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) - [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) +- [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) ### 哈希表 diff --git a/basic/binary-tree/ext-diameter-of-binary-tree.md b/basic/binary-tree/ext-diameter-of-binary-tree.md new file mode 100644 index 0000000..ebdc77b --- /dev/null +++ b/basic/binary-tree/ext-diameter-of-binary-tree.md @@ -0,0 +1,79 @@ +# 543. 二叉树的直径 + +https://leetcode-cn.com/problems/diameter-of-binary-tree/ + +## 题目描述 + +``` +给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 + +  + +示例 : +给定二叉树 + + 1 + / \ + 2 3 + / \ + 4 5 +返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 + +  + +注意:两结点之间的路径长度是以它们之间边的数目表示。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/diameter-of-binary-tree +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1: DFS + +### 思路 + +题目的意思就是要找到一个子树,满足条件“其左子树高度+右子树高度值最大”,返回这个最大值。 + +要找到符合条件的子树,只需要在计算二叉树高度的同时用一个全局变量来记录就行。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$,N 是二叉树节点数。 +- 空间复杂度:$O(h)$,h 是二叉树的高度。 + +### 代码 + +JavaScript Code + +```js +/** + * Definition for a binary tree node. + * function TreeNode(val) { + * this.val = val; + * this.left = this.right = null; + * } + */ +/** + * @param {TreeNode} root + * @return {number} + */ +var diameterOfBinaryTree = function(root) { + let max = 0 + dfs(root) + return max + + // **************************************** + function dfs(root) { + if (!root) return 0 + if (!root.left && !root.right) return 1 + + const leftH = dfs(root.left) + const rightH = dfs(root.right) + if (leftH + rightH > max) max = leftH + rightH + + return Math.max(leftH, rightH) + 1 + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 34ccf7052ef47508ad897573946deed154a2497d Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 7 Jan 2021 15:20:38 +0800 Subject: [PATCH 14/44] =?UTF-8?q?add:=2033.=E6=90=9C=E7=B4=A2=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84=E3=80=8181.?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=97=8B=E8=BD=AC=E6=8E=92=E5=BA=8F=E6=95=B0?= =?UTF-8?q?=E7=BB=84=20II?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierrc | 1 + README.md | 321 +++++++++--------- assets/33_0.png | Bin 0 -> 110762 bytes templates/binary-search.js | 145 ++++++++ .../{day-62.md => binary-search/61.sqrtx.md} | 16 +- .../62.first-bad-version.md} | 19 +- .../63.find-peak-element.md} | 33 +- .../ext-search-in-rotated-sorted-array-ii.md | 96 ++++++ .../ext-search-in-rotated-sorted-array.md | 99 ++++++ 9 files changed, 566 insertions(+), 164 deletions(-) create mode 100644 .prettierrc create mode 100644 assets/33_0.png create mode 100644 templates/binary-search.js rename topics/{day-62.md => binary-search/61.sqrtx.md} (86%) rename topics/{day-63.md => binary-search/62.first-bad-version.md} (85%) rename topics/{day-64.md => binary-search/63.find-peak-element.md} (70%) create mode 100644 topics/binary-search/ext-search-in-rotated-sorted-array-ii.md create mode 100644 topics/binary-search/ext-search-in-rotated-sorted-array.md diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/README.md b/README.md index ca21c61..a721261 100644 --- a/README.md +++ b/README.md @@ -28,19 +28,24 @@ - [剪枝](#剪枝) - [每日一题](#每日一题-5) - [字符串匹配](#字符串匹配) + - [每日一题](#每日一题-6) + - [拓展题目](#拓展题目) - [堆](#堆) + - [每日一题](#每日一题-7) - [专题篇](#专题篇) - [二分法](#二分法) + - [每日一题](#每日一题-8) + - [拓展题目](#拓展题目-1) - [滑动窗口](#滑动窗口) - - [每日一题](#每日一题-6) - - [拓展题目](#拓展题目) + - [每日一题](#每日一题-9) + - [拓展题目](#拓展题目-2) - [位运算](#位运算) - [搜索(BFS, DFS, 回溯)](#搜索bfs-dfs-回溯) - [背包问题](#背包问题) - [动态规划](#动态规划) - [分治](#分治) - [贪心](#贪心) - - [每日一题](#每日一题-7) + - [每日一题](#每日一题-10) - [贪心拓展题目](#贪心拓展题目) - [其他](#其他) @@ -54,110 +59,110 @@ #### 每日一题 -- [x] [【day-01】66.加一](./basic/array-stack-queue/01.plus-one.md) -- [x] [【day-02】821.字符的最短距离](./basic/array-stack-queue/02.shortest-distance-to-a-character.md) -- [x] [【day-03】1381.设计一个支持增量操作的栈](./basic/array-stack-queue/03.design-a-stack-with-increment-operation.md) -- [x] [【day-04】394.字符串解码](./basic/array-stack-queue/04.decode-string.md) -- [x] [【day-05】232.用栈实现队列](./basic/array-stack-queue/05.implement-queue-using-stacks.md) -- [x] [【day-06】768.最多能完成排序的块 II](./basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md) +- [x] [【day-01】66.加一](./basic/array-stack-queue/01.plus-one.md) +- [x] [【day-02】821.字符的最短距离](./basic/array-stack-queue/02.shortest-distance-to-a-character.md) +- [x] [【day-03】1381.设计一个支持增量操作的栈](./basic/array-stack-queue/03.design-a-stack-with-increment-operation.md) +- [x] [【day-04】394.字符串解码](./basic/array-stack-queue/04.decode-string.md) +- [x] [【day-05】232.用栈实现队列](./basic/array-stack-queue/05.implement-queue-using-stacks.md) +- [x] [【day-06】768.最多能完成排序的块 II](./basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md) #### 数组拓展题目 -- [x] [75.颜色分类](./basic/array-stack-queue/ext-sort-colors.md) -- [x] [28.实现 strStr()](./basic/array-stack-queue/ext-implement-strstr.md) -- [x] [380.常数时间插入、删除和获取随机元素](./basic/array-stack-queue/ext-insert-delete-getrandom-o1.md) -- [ ] [59. 螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/) -- [ ] [859. 亲密字符串](https://leetcode-cn.com/problems/buddy-strings/) +- [x] [75.颜色分类](./basic/array-stack-queue/ext-sort-colors.md) +- [x] [28.实现 strStr()](./basic/array-stack-queue/ext-implement-strstr.md) +- [x] [380.常数时间插入、删除和获取随机元素](./basic/array-stack-queue/ext-insert-delete-getrandom-o1.md) +- [ ] [59. 螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/) +- [ ] [859. 亲密字符串](https://leetcode-cn.com/problems/buddy-strings/) #### 栈拓展题目 -- [ ] [946. 验证栈序列](https://leetcode-cn.com/problems/validate-stack-sequences/) +- [ ] [946. 验证栈序列](https://leetcode-cn.com/problems/validate-stack-sequences/) #### 队列拓展题目 -- [ ] [155.最小栈](https://leetcode-cn.com/problems/min-stack/) -- [ ] [更多](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%8E%A8%E8%8D%90%E9%A2%98%E7%9B%AE) +- [ ] [155.最小栈](https://leetcode-cn.com/problems/min-stack/) +- [ ] [更多](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%8E%A8%E8%8D%90%E9%A2%98%E7%9B%AE) #### 相关专题 -- [ ] [前缀和](https://lucifer.ren/blog/2020/09/27/atMostK/) -- [ ] [单调栈](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%8D%95%E8%B0%83%E6%A0%88) -- [ ] [栈匹配](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%A0%88%E5%8C%B9%E9%85%8D) -- [ ] [分桶](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%88%86%E6%A1%B6) -- [ ] [链表反转](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC) +- [ ] [前缀和](https://lucifer.ren/blog/2020/09/27/atMostK/) +- [ ] [单调栈](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%8D%95%E8%B0%83%E6%A0%88) +- [ ] [栈匹配](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%A0%88%E5%8C%B9%E9%85%8D) +- [ ] [分桶](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%88%86%E6%A1%B6) +- [ ] [链表反转](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC) ### 链表 #### 每日一题 -- [x] [【day-07】24.两两交换链表中的节点](./basic/linked-list/07.swap-nodes-in-pairs.md) -- [ ] [【day-08】61.旋转链表](./basic/linked-list/08.rotate-list.md) -- [ ] [【day-09】109.有序链表转换二叉搜索树](./basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md) -- [x] [【day-10】160.相交链表](./basic/linked-list/10.intersection-of-two-linked-lists.md) -- [x] [【day-11】142.环形链表 II](./basic/linked-list/11.linked-list-cycle-ii.md) -- [x] [【day-12】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) +- [x] [【day-07】24.两两交换链表中的节点](./basic/linked-list/07.swap-nodes-in-pairs.md) +- [ ] [【day-08】61.旋转链表](./basic/linked-list/08.rotate-list.md) +- [ ] [【day-09】109.有序链表转换二叉搜索树](./basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md) +- [x] [【day-10】160.相交链表](./basic/linked-list/10.intersection-of-two-linked-lists.md) +- [x] [【day-11】142.环形链表 II](./basic/linked-list/11.linked-list-cycle-ii.md) +- [x] [【day-12】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) #### 链表拓展题目 -- [x] [21.合并两个有序链表](./basic/linked-list/ext-merge-two-sorted-lists.md) -- [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) -- [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) +- [x] [21.合并两个有序链表](./basic/linked-list/ext-merge-two-sorted-lists.md) +- [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) +- [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) ### 树 #### 每日一题 -- [x] [【day-13】104.二叉树的最大深度](./basic/binary-tree/13.maximum-depth-of-binary-tree.md) -- [x] [【day-14】100.相同的树](./basic/binary-tree/14.same-tree.md) -- [x] [【day-15】129.求根到叶子节点数字之和](./basic/binary-tree/15.sum-root-to-leaf-numbers.md) -- [x] [【day-16】513.找树左下角的值](./basic/binary-tree/16.find-bottom-left-tree-value.md) -- [x] [【day-17】297.二叉树的序列化与反序列化](./basic/binary-tree/17.serialize-and-deserialize-binary-tree.md) -- [x] [【day-18】987.二叉树的垂序遍历](./basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md) +- [x] [【day-13】104.二叉树的最大深度](./basic/binary-tree/13.maximum-depth-of-binary-tree.md) +- [x] [【day-14】100.相同的树](./basic/binary-tree/14.same-tree.md) +- [x] [【day-15】129.求根到叶子节点数字之和](./basic/binary-tree/15.sum-root-to-leaf-numbers.md) +- [x] [【day-16】513.找树左下角的值](./basic/binary-tree/16.find-bottom-left-tree-value.md) +- [x] [【day-17】297.二叉树的序列化与反序列化](./basic/binary-tree/17.serialize-and-deserialize-binary-tree.md) +- [x] [【day-18】987.二叉树的垂序遍历](./basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md) #### 树拓展题目 -- [x] [105.从前序与中序遍历序列构造二叉树](./basic/binary-tree/ext-construct-binary-tree-from-preorder-and-inorder-traversal.md) -- [x] [404.左叶子之和](./basic/binary-tree/ext-sum-of-left-leaves.md) -- [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) -- [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) -- [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) +- [x] [105.从前序与中序遍历序列构造二叉树](./basic/binary-tree/ext-construct-binary-tree-from-preorder-and-inorder-traversal.md) +- [x] [404.左叶子之和](./basic/binary-tree/ext-sum-of-left-leaves.md) +- [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) +- [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) +- [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) ### 哈希表 #### 每日一题 -- [x] [【day-19】1.两数之和](./basic/hashmap/19.two-sum.md) -- [x] [【day-20】347.前 K 个高频元素](./basic/hashmap/20.top-k-frequent-elements.md) -- [x] [【day-21】447.回旋镖的数量](./basic/hashmap/21.number-of-boomerangs.md) -- [x] [【day-22】3.无重复字符的最长子串](./basic/hashmap/22.longest-substring-without-repeating-characters.md) -- [x] [【day-23】30.串联所有单词的子串](./basic/hashmap/23.substring-with-concatenation-of-all-words.md) -- [x] [【day-24】37.解数独](./basic/hashmap/24.sudoku-solver.md) +- [x] [【day-19】1.两数之和](./basic/hashmap/19.two-sum.md) +- [x] [【day-20】347.前 K 个高频元素](./basic/hashmap/20.top-k-frequent-elements.md) +- [x] [【day-21】447.回旋镖的数量](./basic/hashmap/21.number-of-boomerangs.md) +- [x] [【day-22】3.无重复字符的最长子串](./basic/hashmap/22.longest-substring-without-repeating-characters.md) +- [x] [【day-23】30.串联所有单词的子串](./basic/hashmap/23.substring-with-concatenation-of-all-words.md) +- [x] [【day-24】37.解数独](./basic/hashmap/24.sudoku-solver.md) #### 哈希表拓展题目 -- [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) -- [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) -- [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) -- [ ] [149.直线上最多的点数](https://leetcode-cn.com/problems/max-points-on-a-line) +- [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) +- [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) +- [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) +- [ ] [149.直线上最多的点数](https://leetcode-cn.com/problems/max-points-on-a-line) ### 双指针 #### 每日一题 -- [x] [【day-25】35.搜索插入位置](./basic/two-pointers/25.search-insert-position.md) -- [x] [【day-26】74.搜索二维矩阵](./basic/two-pointers/26.search-a-2d-matrix.md) -- [x] [【day-27】26.删除排序数组中的重复项](./basic/two-pointers/27.remove-duplicates-from-sorted-array.md) -- [x] [【day-28】876.链表的中间结点](./basic/two-pointers/28.middle-of-the-linked-list.md) -- [x] [【day-29】1052.爱生气的书店老板](./basic/two-pointers/29.grumpy-bookstore-owner.md) -- [x] [【day-30】239.滑动窗口最大值](./basic/two-pointers/30.sliding-window-maximum.md) +- [x] [【day-25】35.搜索插入位置](./basic/two-pointers/25.search-insert-position.md) +- [x] [【day-26】74.搜索二维矩阵](./basic/two-pointers/26.search-a-2d-matrix.md) +- [x] [【day-27】26.删除排序数组中的重复项](./basic/two-pointers/27.remove-duplicates-from-sorted-array.md) +- [x] [【day-28】876.链表的中间结点](./basic/two-pointers/28.middle-of-the-linked-list.md) +- [x] [【day-29】1052.爱生气的书店老板](./basic/two-pointers/29.grumpy-bookstore-owner.md) +- [x] [【day-30】239.滑动窗口最大值](./basic/two-pointers/30.sliding-window-maximum.md) #### 双指针拓展题目 -- [x] [875.爱吃香蕉的珂珂](./basic/two-pointers/ext-koko-eating-bananas.md) -- [x] [167.两数之和 II - 输入有序数组](./basic/two-pointers/ext-two-sum-ii-input-array-is-sorted.md) -- [x] [42.接雨水](./basic/two-pointers/ext-trapping-rain-water.md) -- [x] [面试题 17.11.单词距离](./basic/two-pointers/ext-find-closest-lcci.md) -- [ ] [11.盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water) +- [x] [875.爱吃香蕉的珂珂](./basic/two-pointers/ext-koko-eating-bananas.md) +- [x] [167.两数之和 II - 输入有序数组](./basic/two-pointers/ext-two-sum-ii-input-array-is-sorted.md) +- [x] [42.接雨水](./basic/two-pointers/ext-trapping-rain-water.md) +- [x] [面试题 17.11.单词距离](./basic/two-pointers/ext-find-closest-lcci.md) +- [ ] [11.盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water) ## 进阶篇 @@ -165,171 +170,183 @@ **二叉树遍历系列** -- [x] [【day-34】二叉树遍历系列](./medium/hot/34.traversal-of-binary-tree.md) +- [x] [【day-34】二叉树遍历系列](./medium/hot/34.traversal-of-binary-tree.md) **反转链表系列** -- [x] [【day-35】206.反转链表](./medium/hot/35.reverse-linked-list.md) -- [x] [【day-35】92.反转链表 II](./medium/hot/35.reverse-linked-list-ii.md) -- [x] [【day-35】25.K 个一组翻转链表](./medium/hot/35.reverse-nodes-in-k-group.md) +- [x] [【day-35】206.反转链表](./medium/hot/35.reverse-linked-list.md) +- [x] [【day-35】92.反转链表 II](./medium/hot/35.reverse-linked-list-ii.md) +- [x] [【day-35】25.K 个一组翻转链表](./medium/hot/35.reverse-nodes-in-k-group.md) **位运算系列** -- [ ] [【day-36】78.子集](./medium/hot/36.subsets.md) +- [ ] [【day-36】78.子集](./medium/hot/36.subsets.md) **动态规划系列** -- [x] [【day-37】62.不同路径](./medium/hot/37.unique-paths.md) -- [ ] [70. 爬楼梯](./) -- [ ] [121. 买卖股票的最佳时机](./) -- [ ] [122. 买卖股票的最佳时机 II](./) -- [ ] [123. 买卖股票的最佳时机 III](./) -- [ ] [188. 买卖股票的最佳时机 IV](./) -- [ ] [309. 最佳买卖股票时机含冷冻期](./) -- [ ] [714. 买卖股票的最佳时机含手续费](./) +- [x] [【day-37】62.不同路径](./medium/hot/37.unique-paths.md) +- [ ] [70. 爬楼梯](./) +- [ ] [121. 买卖股票的最佳时机](./) +- [ ] [122. 买卖股票的最佳时机 II](./) +- [ ] [123. 买卖股票的最佳时机 III](./) +- [ ] [188. 买卖股票的最佳时机 IV](./) +- [ ] [309. 最佳买卖股票时机含冷冻期](./) +- [ ] [714. 买卖股票的最佳时机含手续费](./) **有效括号系列** -- [x] [【day-38】20.有效括号](./medium/hot/38.valid-parentheses.md) -- [x] [【day-38】32.最长有效括号](./medium/hot/38.longest-valid-parentheses.md) +- [x] [【day-38】20.有效括号](./medium/hot/38.valid-parentheses.md) +- [x] [【day-38】32.最长有效括号](./medium/hot/38.longest-valid-parentheses.md) **设计系列** -- [ ] [【day-39】剑指 Offer09.用两个栈实现队列](./) -- [ ] [【day-39】641.设计循环双端队列](./) -- [x] [【day-39】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) -- [ ] [【day-39】1206.设计跳表](./) +- [ ] [【day-39】剑指 Offer09.用两个栈实现队列](./) +- [ ] [【day-39】641.设计循环双端队列](./) +- [x] [【day-39】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) +- [ ] [【day-39】1206.设计跳表](./) **前缀和系列** -- [x] [【day-40】网易面试题](./medium/hot/40.netease.md) -- [x] [【day-40】560.和为 K 的子数组](./medium/hot/40.subarray-sum-equals-k.md) -- [x] [【day-40】1371.每个元音包含偶数次的最长子字符串](./medium/hot/40.find-the-longest-substring-containing-vowels-in-even-counts.md) +- [x] [【day-40】网易面试题](./medium/hot/40.netease.md) +- [x] [【day-40】560.和为 K 的子数组](./medium/hot/40.subarray-sum-equals-k.md) +- [x] [【day-40】1371.每个元音包含偶数次的最长子字符串](./medium/hot/40.find-the-longest-substring-containing-vowels-in-even-counts.md) ### 前缀树 -- [x] [【day-41】208.实现 Trie](./medium/trie/41.implement-trie-prefix-tree.md) -- [x] [【day-42】677.键值映射](./medium/trie/42.map-sum-pairs.md) -- [x] [【day-43】面试题 17.17.多次搜索](./medium/trie/43.multi-search-lcci.md) +- [x] [【day-41】208.实现 Trie](./medium/trie/41.implement-trie-prefix-tree.md) +- [x] [【day-42】677.键值映射](./medium/trie/42.map-sum-pairs.md) +- [x] [【day-43】面试题 17.17.多次搜索](./medium/trie/43.multi-search-lcci.md) ### 并查集 -- [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) -- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) -- [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) +- [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) +- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) +- [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) ### 跳表 -- [ ] [【day-47】1206.设计跳表](./) +- [ ] [【day-47】1206.设计跳表](./) ### 剪枝 #### 每日一题 -- [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) -- [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) -- [x] [【day-50】40.组合总和 II](./medium/prune/50.combination-sum-ii.md) -- [ ] [【day-51】47.全排列 II](./medium/prune/51.permutations-ii.md) +- [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) +- [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) +- [x] [【day-50】40.组合总和 II](./medium/prune/50.combination-sum-ii.md) +- [ ] [【day-51】47.全排列 II](./medium/prune/51.permutations-ii.md) ### 字符串匹配 -- [ ] [【day-52】28.实现 strStr()](./medium/rk-kpm/52.implement-strstr.md) +#### 每日一题 + +- [ ] [【day-52】28.实现 strStr()](./medium/rk-kpm/52.implement-strstr.md) + +#### 拓展题目 -- [ ] [【day-52】1371.每个元音包含偶数次的最长子字符串](./medium/day-52.md) -- [ ] [【day-53】面试题 17.13.恢复空格](./medium/day-53.md) -- [ ] [【day-54】1316.不同的循环子字符串](./) -- [ ] [【day-56】215.数组中的第 K 个最大元素](./) -- [ ] [【day-57】451.根据字符出现频率排序](./) -- [ ] [【day-58】295.数据流的中位数](./) -- [ ] [【day-59】378.有序矩阵中第 K 小的元素](./) -- [ ] [【day-60】1054.距离相等的条形码](./) -- [ ] [【day-61】面试题 17.09.第 k 个数](./) +- [ ] [1371.每个元音包含偶数次的最长子字符串](./medium/day-52.md) +- [ ] [面试题 17.13.恢复空格](./medium/day-53.md) +- [ ] [1316.不同的循环子字符串](./) +- [ ] [215.数组中的第 K 个最大元素](./) +- [ ] [451.根据字符出现频率排序](./) +- [ ] [295.数据流的中位数](./) +- [ ] [378.有序矩阵中第 K 小的元素](./) +- [ ] [1054.距离相等的条形码](./) +- [ ] [面试题 17.09.第 k 个数](./) ### 堆 -- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) -- [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) -- [x] [【day-56】23.合并K个升序链表](./medium/heap/56.merge-k-sorted-lists.md) -- [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) -- [x] [【day-58】378.有序矩阵中第K小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) -- [x] [【day-59】1054.距离相等的条形码](./medium/heap/59.distant-barcodes.md) +#### 每日一题 + +- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) +- [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) +- [x] [【day-56】23.合并 K 个升序链表](./medium/heap/56.merge-k-sorted-lists.md) +- [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) +- [x] [【day-58】378.有序矩阵中第 K 小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) +- [x] [【day-59】1054.距离相等的条形码](./medium/heap/59.distant-barcodes.md) ## 专题篇 ### 二分法 -- [x] [【day-62】69.x 的平方根](./topics/day-62.md) -- [x] [【day-63】278.第一个错误的版本](./topics/day-63.md) -- [x] [【day-64】162.寻找峰值](./topics/day-64.md) -- [ ] [【day-65】34.在排序数组中查找元素的第一个和最后一个位置](./) -- [ ] [【day-66】4.寻找两个正序数组的中位数](./) -- [ ] [【day-67】222.完全二叉树的节点个数](./) +#### 每日一题 + +- [x] [【day-61】69.x 的平方根](./topics/binary-search/61.sqrtx.md) +- [x] [【day-62】278.第一个错误的版本](./topics/binary-search/62.first-bad-version.md) +- [x] [【day-63】162.寻找峰值](./topics/binary-search/63.find-peak-element.md) + +#### 拓展题目 + +- [x] [33.搜索旋转排序数组](./topics/binary-search/ext-search-in-rotated-sorted-array.md) +- [x] [81.搜索旋转排序数组 II](./topics/binary-search/ext-search-in-rotated-sorted-array-ii.md) +- [ ] [34.在排序数组中查找元素的第一个和最后一个位置](./) +- [ ] [4.寻找两个正序数组的中位数](./) +- [ ] [222.完全二叉树的节点个数](./) ### 滑动窗口 #### 每日一题 -- [x] [【day-68】1456.定长子串中元音的最大数目](./topics/day-68.md) -- [ ] [【day-70】76.最小覆盖子串](./topics/day-70.md) -- [ ] [【day-71】30.串联所有单词的子串](./topics/day-71.md) +- [x] [【day-68】1456.定长子串中元音的最大数目](./topics/day-68.md) +- [ ] [【day-70】76.最小覆盖子串](./topics/day-70.md) +- [ ] [【day-71】30.串联所有单词的子串](./topics/day-71.md) #### 拓展题目 -- [x] [581.最短无序连续子数组](./topics/sliding-window/ext-shortest-unsorted-continuous-subarray.md) +- [x] [581.最短无序连续子数组](./topics/sliding-window/ext-shortest-unsorted-continuous-subarray.md) ### 位运算 -- [ ] [【day-72】268.缺失数字](./topics/day-72.md) -- [ ] [【day-73】78.子集](./topics/day-73.md) +- [ ] [【day-72】268.缺失数字](./topics/day-72.md) +- [ ] [【day-73】78.子集](./topics/day-73.md) ### 搜索(BFS, DFS, 回溯) -- [x] [【day-74】1254.统计封闭岛屿的数目](./topics/day-74.md) -- [ ] [【day-75】 51.N 皇后](./topics/day-75.md) -- [ ] [【day-76】 130.被围绕的区域](./topics/day-76.md) -- [ ] [【day-77】 827.最大人工岛](./topics/day-77.md) -- [ ] [【day-78】 89.格雷编码](./topics/day-78.md) -- [x] [【day-79】980.不同路径 III](./topics/day-79.md) - +- [x] [【day-74】1254.统计封闭岛屿的数目](./topics/day-74.md) +- [ ] [【day-75】 51.N 皇后](./topics/day-75.md) +- [ ] [【day-76】 130.被围绕的区域](./topics/day-76.md) +- [ ] [【day-77】 827.最大人工岛](./topics/day-77.md) +- [ ] [【day-78】 89.格雷编码](./topics/day-78.md) +- [x] [【day-79】980.不同路径 III](./topics/day-79.md) -- [x] [5210.球会落何处](./topics/searching/ext-where-will-the-ball-fall.md) +- [x] [5210.球会落何处](./topics/searching/ext-where-will-the-ball-fall.md) ### 背包问题 -- [x] [【day-80】322.零钱兑换](./topics/day-80.md) -- [x] [【day-81】416. 分割等和子集](./topics/day-81.md) -- [x] [【day-82】494. 目标和](./topics/day-82.md) -- [ ] [【day-83】474. 一和零](./topics/day-83.md) +- [x] [【day-80】322.零钱兑换](./topics/day-80.md) +- [x] [【day-81】416. 分割等和子集](./topics/day-81.md) +- [x] [【day-82】494. 目标和](./topics/day-82.md) +- [ ] [【day-83】474. 一和零](./topics/day-83.md) ### 动态规划 -- [ ] [【day-84】爬楼梯变种](./topics/day-84.md) -- [ ] [【day-85】铺地毯-2021 网易校招](./topics/day-85.md) -- [ ] [【day-86】935.骑士拨号器](./topics/day-86.md) -- [ ] [【day-87】1458.两个子序列的最大点积](./topics/day-87.md) +- [ ] [【day-84】爬楼梯变种](./topics/day-84.md) +- [ ] [【day-85】铺地毯-2021 网易校招](./topics/day-85.md) +- [ ] [【day-86】935.骑士拨号器](./topics/day-86.md) +- [ ] [【day-87】1458.两个子序列的最大点积](./topics/day-87.md) ### 分治 -- [x] [【day-88】96.不同的二叉搜索树](./topics/day-88.md) -- [ ] [【day-89】23.合并 K 个升序链表](./topics/day-89.md) +- [x] [【day-88】96.不同的二叉搜索树](./topics/day-88.md) +- [ ] [【day-89】23.合并 K 个升序链表](./topics/day-89.md) ### 贪心 #### 每日一题 -- [ ] [【day-90】765.情侣牵手](./topics/day-90.md) -- [x] [【day-91】881.救生艇](./topics/day-91.md) +- [ ] [【day-90】765.情侣牵手](./topics/day-90.md) +- [x] [【day-91】881.救生艇](./topics/day-91.md) #### 贪心拓展题目 -- [x] [135.分发糖果](./topics/greedy/ext-candy.md) -- [x] [455.分发饼干](./topics/greedy/ext-assign-cookies.md) -- [x] [976.三角形的最大周长](./topics/greedy/ext-largest-perimeter-triangle.md) -- [x] [435.无重叠区间](./topics/greedy/ext-non-overlapping-intervals.md) -- [x] [605.种花问题](./topics/greedy/ext-can-place-flowers.md) +- [x] [135.分发糖果](./topics/greedy/ext-candy.md) +- [x] [455.分发饼干](./topics/greedy/ext-assign-cookies.md) +- [x] [976.三角形的最大周长](./topics/greedy/ext-largest-perimeter-triangle.md) +- [x] [435.无重叠区间](./topics/greedy/ext-non-overlapping-intervals.md) +- [x] [605.种花问题](./topics/greedy/ext-can-place-flowers.md) ## 其他 -- [x] [77.组合](./extensions/77.combination.md) -- [x] [5.最长回文子串](./extensions/5.longest-palindromic-substring.md) -- [ ] [面试题 04.09. 二叉搜索树序列](./extensions/04.09.bst-sequences-lcci.md) +- [x] [77.组合](./extensions/77.combination.md) +- [x] [5.最长回文子串](./extensions/5.longest-palindromic-substring.md) +- [ ] [面试题 04.09. 二叉搜索树序列](./extensions/04.09.bst-sequences-lcci.md) diff --git a/assets/33_0.png b/assets/33_0.png new file mode 100644 index 0000000000000000000000000000000000000000..931d468e10d003653cac5e1c42b1efae15b39824 GIT binary patch literal 110762 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 target) right = mid - 1; + } + + return -1; +} + +/** + * @description 在排序数组中寻找最左边的满足条件的值 + * @param {number[]} nums + * @param {number} target + */ +function binarySearchLeft(nums, target) { + let left = 0; + let right = nums.length - 1; + + while (left <= right) { + const mid = Math.floor(left + (right - left) / 2); + + if (nums[mid] >= target) right = mid - 1; + else left = mid + 1; + } + + // 检查是否越界 + if (left >= nums.length || nums[left] != target) return -1; + + return left; +} + +/** + * @description 在排序数组中寻找最右边的满足条件的值 + * @param {number[]} nums + * @param {number} target + * @returns {number} + */ +function binarySearchRight(nums, target) { + let left = 0; + let right = nums.length - 1; + + while (left <= right) { + const mid = Math.floor(left + (right - left) / 2); + + if (nums[mid] <= target) left = mid + 1; + else right = mid - 1; + } + + // 检查是否越界 + if (right < 0 || nums[right] != target) return -1; + + return right; +} + +/** + * @description 在排序数组中寻找最左插入位置 + * @param {number[]} nums + * @param {number} x + * @returns {number} + */ +function searchInsertLeft(nums, x) { + // 题意转换一下,其实就是寻找第一个“大于等于” x 的数字,返回它的下标 + let left = 0; + let right = nums.length - 1; + + while (left <= right) { + const mid = Math.floor(left + (right - left) / 2); + + if (nums[mid] >= x) right = mid - 1; + if (nums[mid] < x) left = mid + 1; + } + + return left; +} + +/** + * @description 在排序数组中寻找最右插入位置 + * @param {number[]} nums + * @param {number} x + * @returns {number} + */ +function searchInsertRight(nums, x) { + // 题意转换一下,其实就是寻找第一个“大于” x 的数字,返回它的下标 + let left = 0; + let right = nums.length - 1; + + while (left <= right) { + const mid = Math.floor(left + (right - left) / 2); + + if (nums[mid] > x) right = mid - 1; + if (nums[mid] <= x) left = mid + 1; + } + + return left; +} + +/** + * @description 搜索旋转排序数组 + * @param {number[]} nums + * @param {number} target + * @return {number} + */ +var searchRotate = function (nums, target) { + let l = 0, + r = nums.length - 1; + while (l <= r) { + const m = l + ((r - l) >> 1); + if (nums[m] === target) return m; + + // 将重复元素排除在搜索区间外 + while (l < m && nums[l] === nums[m]) { + l++; + } + + // m 位于左侧有序部分 + if (nums[l] <= nums[m]) { + // m 大于 target,并且 target 大于左侧最小值,才缩小右边界 + if (nums[m] > target && target >= nums[l]) r = m - 1; + else l = m + 1; + } + // m 位于右侧有序部分 + else { + // m 小于 target,并且 target 小于右侧最大值,才缩小左边界 + if (nums[m] < target && target <= nums[r]) l = m + 1; + else r = m - 1; + } + } + return -1; +}; diff --git a/topics/day-62.md b/topics/binary-search/61.sqrtx.md similarity index 86% rename from topics/day-62.md rename to topics/binary-search/61.sqrtx.md index cef4a6a..ba72a65 100644 --- a/topics/day-62.md +++ b/topics/binary-search/61.sqrtx.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/sqrtx +- [69. x 的平方根](#69-x-的平方根) + - [题目描述](#题目描述) + - [方法1:二分法](#方法1二分法) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码](#代码) + ## 题目描述 ``` @@ -26,8 +33,9 @@ https://leetcode-cn.com/problems/sqrtx 链接:https://leetcode-cn.com/problems/sqrtx 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` +## 方法1:二分法 -## 思路 +### 思路 这个问题分两种情况: @@ -46,12 +54,12 @@ https://leetcode-cn.com/problems/sqrtx 需要特别注意一下的是 0 和 1 这两个数字,不过上面的算法对这两个数字也是有效的。 -## 复杂度 +### 复杂度 - 时间复杂度:$O(logx)$ - 空间复杂度:$O(1)$ -## 代码 +### 代码 Python Code @@ -70,3 +78,5 @@ class Solution(object): else: l = m + 1 return r ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/topics/day-63.md b/topics/binary-search/62.first-bad-version.md similarity index 85% rename from topics/day-63.md rename to topics/binary-search/62.first-bad-version.md index a436a0f..2db5173 100644 --- a/topics/day-63.md +++ b/topics/binary-search/62.first-bad-version.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/first-bad-version +- [278. 第一个错误的版本](#278-第一个错误的版本) + - [题目描述](#题目描述) + - [方法1:二分法](#方法1二分法) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码](#代码) + ## 题目描述 ``` @@ -26,7 +33,9 @@ https://leetcode-cn.com/problems/first-bad-version 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 思路 +## 方法1:二分法 + +### 思路 **寻找最左边的满足条件的值** @@ -41,12 +50,12 @@ https://leetcode-cn.com/problems/first-bad-version - 如果不符合题目要求,或者 left 出了右边的边界,说明没有找到,返回 -1。 - 否则返回 left 即可。 -## 复杂度 +### 复杂度 -- 时间复杂度:$O(log_n)$ +- 时间复杂度:$O(logn)$ - 空间复杂度:$O(1)$ -## 代码 +### 代码 Python Code @@ -72,3 +81,5 @@ class Solution(object): # 本题中“错误版本”一定存在,不然还是需要检查最终的左指针 # return l if l <= n and isBadVersion(l) else -1 ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/topics/day-64.md b/topics/binary-search/63.find-peak-element.md similarity index 70% rename from topics/day-64.md rename to topics/binary-search/63.find-peak-element.md index 8d62d98..2491e8a 100644 --- a/topics/day-64.md +++ b/topics/binary-search/63.find-peak-element.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/find-peak-element +- [162. 寻找峰值](#162-寻找峰值) + - [题目描述](#题目描述) + - [方法1:二分法](#方法1二分法) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码](#代码) + ## 题目描述 ``` @@ -33,7 +40,26 @@ https://leetcode-cn.com/problems/find-peak-element 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 代码 +## 方法1:二分法 + +### 思路 + +假如存在目标值 `nums[m]`,那么目标值需要满足的条件是: + +```py +nums[m] > nums[m - 1] and nums[m] > nums[m + 1] +``` + +剩下就是二分模板的事。 + +### 复杂度 + +- 时间复杂度:$O(logn)$ +- 空间复杂度:$O(1)$ + +### 代码 + +JavaScript Code ```js /** @@ -53,7 +79,4 @@ var findPeakElement = function (nums) { }; ``` -## 复杂度 - -- 时间复杂度:$O(logn)$ -- 空间复杂度:$O(1)$ +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/topics/binary-search/ext-search-in-rotated-sorted-array-ii.md b/topics/binary-search/ext-search-in-rotated-sorted-array-ii.md new file mode 100644 index 0000000..91cb219 --- /dev/null +++ b/topics/binary-search/ext-search-in-rotated-sorted-array-ii.md @@ -0,0 +1,96 @@ +# 81. 搜索旋转排序数组 II + +https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ + +- [81. 搜索旋转排序数组 II](#81-搜索旋转排序数组-ii) + - [题目描述](#题目描述) + - [方法 1:二分法](#方法-1二分法) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +假设按照升序排序的数组在预先未知的某个点上进行了旋转。 + +( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 + +编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 + +示例 1: + +输入: nums = [2,5,6,0,0,1,2], target = 0 +输出: true +示例 2: + +输入: nums = [2,5,6,0,0,1,2], target = 3 +输出: false +进阶: + +这是 搜索旋转排序数组 的延伸题目,本题中的 nums  可能包含重复元素。 +这会影响到程序的时间复杂度吗?会有怎样的影响,为什么? + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:二分法 + +### 思路 + +跟 [33. 搜索旋转排序数组](./ext-search-in-rotated-sorted-array.md) 的思路差不多,只不过多了重复元素这一条件。 + +```js +// 将重复元素排除在搜索区间外 +while (l < m && nums[l] === nums[m]) { + l++; +} +``` + +### 复杂度分析 + +- 时间复杂度:$O(nlogn)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} target + * @return {boolean} + */ +var search = function (nums, target) { + let l = 0, + r = nums.length - 1; + while (l <= r) { + const m = l + ((r - l) >> 1); + if (nums[m] === target) return true; + + // 将重复元素排除在搜索区间外 + while (l < m && nums[l] === nums[m]) { + l++; + } + + // m 位于左侧有序部分 + if (nums[l] <= nums[m]) { + // m 大于 target,并且 target 大于左侧最小值,才缩小右边界 + if (nums[m] > target && target >= nums[l]) r = m - 1; + else l = m + 1; + } + // m 位于右侧有序部分 + else { + // m 小于 target,并且 target 小于右侧最大值,才缩小左边界 + if (nums[m] < target && target <= nums[r]) l = m + 1; + else r = m - 1; + } + } + return false; +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) diff --git a/topics/binary-search/ext-search-in-rotated-sorted-array.md b/topics/binary-search/ext-search-in-rotated-sorted-array.md new file mode 100644 index 0000000..79f24d7 --- /dev/null +++ b/topics/binary-search/ext-search-in-rotated-sorted-array.md @@ -0,0 +1,99 @@ +# 33. 搜索旋转排序数组 + +https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ + +- [33. 搜索旋转排序数组](#33-搜索旋转排序数组) + - [题目描述](#题目描述) + - [方法1: 二分法](#方法1-二分法) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。 + +请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 + +  + +示例 1: + +输入:nums = [4,5,6,7,0,1,2], target = 0 +输出:4 +示例 2: + +输入:nums = [4,5,6,7,0,1,2], target = 3 +输出:-1 +示例 3: + +输入:nums = [1], target = 0 +输出:-1 +  + +提示: + +1 <= nums.length <= 5000 +-10^4 <= nums[i] <= 10^4 +nums 中的每个值都 独一无二 +nums 肯定会在某个点上旋转 +-10^4 <= target <= 10^4 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1: 二分法 + +### 思路 + +旋转数组其实可以分为两个有序的数组,从旋转点切分开,前半部分和后半部分都是有序的。我们按正常的二分法思路,先确定一个中点 mid 的话,那么 + +- 如果 mid 位于 `左侧有序部分`,则从 mid 切分数组后,`左侧是有序的`,右侧是无序的 +- 如果 mid 位于 `右侧有序部分`,则从 mid 切分数组后,`右侧是有序的`,左侧是无序的 + +也就是说我们选定一个中点之后,数组总会被分为有序和无序两个部分,对于有序部分,我们很容易能判断是否需要继续搜索,如果有序部分不满足搜索条件,那我们就将搜索区间缩小为数组无序部分。 + +![](https://cdn.jsdelivr.net/gh/suukii/Articles/assets/33_0.png) + +### 复杂度分析 + +- 时间复杂度:$O(logn)$,n 为数组长度。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} target + * @return {number} + */ +var search = function(nums, target) { + let l = 0, r = nums.length - 1 + while (l <= r) { + const m = l + ((r - l) >> 1) + if (nums[m] === target) return m + + // m 位于左侧有序部分 + if (nums[l] <= nums[m]) { + // m 大于 target,并且 target 大于左侧最小值,才缩小右边界 + if (nums[m] > target && target >= nums[l]) r = m - 1 + else l = m + 1; + } + // m 位于右侧有序部分 + else { + // m 小于 target,并且 target 小于右侧最大值,才缩小左边界 + if (nums[m] < target && target <= nums[r]) l = m + 1; + else r = m - 1; + } + } + return -1 +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 4d326dc84d7b999ff8a055dc1b8796fdd472c16e Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 7 Jan 2021 15:22:52 +0800 Subject: [PATCH 15/44] fix image link --- .../ext-search-in-rotated-sorted-array.md | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/topics/binary-search/ext-search-in-rotated-sorted-array.md b/topics/binary-search/ext-search-in-rotated-sorted-array.md index 79f24d7..2f78dea 100644 --- a/topics/binary-search/ext-search-in-rotated-sorted-array.md +++ b/topics/binary-search/ext-search-in-rotated-sorted-array.md @@ -4,7 +4,7 @@ https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ - [33. 搜索旋转排序数组](#33-搜索旋转排序数组) - [题目描述](#题目描述) - - [方法1: 二分法](#方法1-二分法) + - [方法 1: 二分法](#方法-1-二分法) - [思路](#思路) - [复杂度分析](#复杂度分析) - [代码](#代码) @@ -45,7 +45,7 @@ nums 肯定会在某个点上旋转 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 方法1: 二分法 +## 方法 1: 二分法 ### 思路 @@ -56,12 +56,12 @@ nums 肯定会在某个点上旋转 也就是说我们选定一个中点之后,数组总会被分为有序和无序两个部分,对于有序部分,我们很容易能判断是否需要继续搜索,如果有序部分不满足搜索条件,那我们就将搜索区间缩小为数组无序部分。 -![](https://cdn.jsdelivr.net/gh/suukii/Articles/assets/33_0.png) +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/33_0.png) ### 复杂度分析 -- 时间复杂度:$O(logn)$,n 为数组长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(logn)$,n 为数组长度。 +- 空间复杂度:$O(1)$。 ### 代码 @@ -73,27 +73,28 @@ JavaScript Code * @param {number} target * @return {number} */ -var search = function(nums, target) { - let l = 0, r = nums.length - 1 - while (l <= r) { - const m = l + ((r - l) >> 1) - if (nums[m] === target) return m - - // m 位于左侧有序部分 - if (nums[l] <= nums[m]) { - // m 大于 target,并且 target 大于左侧最小值,才缩小右边界 - if (nums[m] > target && target >= nums[l]) r = m - 1 - else l = m + 1; - } - // m 位于右侧有序部分 - else { - // m 小于 target,并且 target 小于右侧最大值,才缩小左边界 - if (nums[m] < target && target <= nums[r]) l = m + 1; - else r = m - 1; - } +var search = function (nums, target) { + let l = 0, + r = nums.length - 1; + while (l <= r) { + const m = l + ((r - l) >> 1); + if (nums[m] === target) return m; + + // m 位于左侧有序部分 + if (nums[l] <= nums[m]) { + // m 大于 target,并且 target 大于左侧最小值,才缩小右边界 + if (nums[m] > target && target >= nums[l]) r = m - 1; + else l = m + 1; } - return -1 + // m 位于右侧有序部分 + else { + // m 小于 target,并且 target 小于右侧最大值,才缩小左边界 + if (nums[m] < target && target <= nums[r]) l = m + 1; + else r = m - 1; + } + } + return -1; }; ``` -更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 59ad625d4379017b432eb8c307adf63e0da93a66 Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 7 Jan 2021 15:26:42 +0800 Subject: [PATCH 16/44] =?UTF-8?q?update:=201456.=20=E5=AE=9A=E9=95=BF?= =?UTF-8?q?=E5=AD=90=E4=B8=B2=E4=B8=AD=E5=85=83=E9=9F=B3=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E6=95=B0=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- ...-vowels-in-a-substring-of-given-length.md} | 52 +++++++++++-------- 2 files changed, 31 insertions(+), 23 deletions(-) rename topics/{day-68.md => sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md} (67%) diff --git a/README.md b/README.md index a721261..4bb514b 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ #### 每日一题 -- [x] [【day-68】1456.定长子串中元音的最大数目](./topics/day-68.md) +- [x] [【day-67】1456.定长子串中元音的最大数目](./topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md) - [ ] [【day-70】76.最小覆盖子串](./topics/day-70.md) - [ ] [【day-71】30.串联所有单词的子串](./topics/day-71.md) diff --git a/topics/day-68.md b/topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md similarity index 67% rename from topics/day-68.md rename to topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md index 22549c4..6fcfbb2 100644 --- a/topics/day-68.md +++ b/topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md @@ -2,6 +2,12 @@ https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length +- [1456. 定长子串中元音的最大数目](#1456-定长子串中元音的最大数目) + - [题目描述](#题目描述) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码](#代码) + ## 题目描述 ``` @@ -54,8 +60,8 @@ s 由小写英文字母组成 看到题目第一个想法就是滑动窗口了,因为子字符串的长度 k 是固定的,所以真的很简单。 -- 使用一个长度为 k 的窗口从 s 的左侧滑向右侧 -- 分别计算窗口中包含的元音个数,最终返回最大值 +- 使用一个长度为 k 的窗口从 s 的左侧滑向右侧 +- 分别计算窗口中包含的元音个数,最终返回最大值 要点是如何计算窗口中的元音个数?如果窗口每移动一步就遍历计算一次,必然是超时的。 @@ -66,12 +72,12 @@ s 由小写英文字母组成 那这样我们只需要在滑动开始时记录一下窗口中的元音个数 `count`,之后移动窗口时判断左侧丢弃的元素和右侧新增的元素是不是元音,对应地减少或者增加 `count` 就行。 -![temp.png](https://pic.leetcode-cn.com/938297f94d75b5408e096e49ad7d3f28d9da48dbbd962abb33b8c6078af3dea5-temp.png) +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/1456_0.png) ## 复杂度 -- 时间复杂度:$O(N)$,N 为字符串的长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N)$,N 为字符串的长度。 +- 空间复杂度:$O(1)$。 ## 代码 @@ -82,22 +88,24 @@ s 由小写英文字母组成 * @return {number} */ var maxVowels = function (s, k) { - const vowels = new Set(['a', 'e', 'i', 'o', 'u']); - let count = 0, - l = 0, - r = 0; - while (r < k) { - vowels.has(s[r]) && count++; - r++; - } - let max = count; - while (r < s.length) { - vowels.has(s[r]) && count++; - vowels.has(s[l]) && count--; - l++; - r++; - max = Math.max(max, count); - } - return max; + const vowels = new Set(["a", "e", "i", "o", "u"]); + let count = 0, + l = 0, + r = 0; + while (r < k) { + vowels.has(s[r]) && count++; + r++; + } + let max = count; + while (r < s.length) { + vowels.has(s[r]) && count++; + vowels.has(s[l]) && count--; + l++; + r++; + max = Math.max(max, count); + } + return max; }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From c61b2da5b293766f35ff1b6b353f477b4fb0782a Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 8 Jan 2021 15:07:54 +0800 Subject: [PATCH 17/44] =?UTF-8?q?add:=20189.=E6=97=8B=E8=BD=AC=E6=95=B0?= =?UTF-8?q?=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + assets/1456_0.png | Bin 0 -> 24211 bytes assets/189_0.png | Bin 0 -> 85082 bytes assets/189_1.png | Bin 0 -> 55938 bytes assets/189_2.png | Bin 0 -> 216816 bytes basic/array-stack-queue/ext-rotate-array.md | 183 ++++++++++++++++++++ 6 files changed, 184 insertions(+) create mode 100644 assets/1456_0.png create mode 100644 assets/189_0.png create mode 100644 assets/189_1.png create mode 100644 assets/189_2.png create mode 100644 basic/array-stack-queue/ext-rotate-array.md diff --git a/README.md b/README.md index 4bb514b..e5a783a 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ - [x] [75.颜色分类](./basic/array-stack-queue/ext-sort-colors.md) - [x] [28.实现 strStr()](./basic/array-stack-queue/ext-implement-strstr.md) - [x] [380.常数时间插入、删除和获取随机元素](./basic/array-stack-queue/ext-insert-delete-getrandom-o1.md) +- [x] [189.旋转数组](./basic/array-stack-queue/ext-rotate-array.md) - [ ] [59. 螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/) - [ ] [859. 亲密字符串](https://leetcode-cn.com/problems/buddy-strings/) diff --git a/assets/1456_0.png b/assets/1456_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3df9b88a6ae4f528fc088c7ef9b51fdb230bb4ba GIT binary patch literal 24211 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%0D(jCUZS=xd?n}0I&9@77YHdsyc+i&m*(1*D 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 IL_hicKdUkIZ2$lO literal 0 HcmV?d00001 diff --git a/assets/189_1.png b/assets/189_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a963476743a7b6b1623737ada00876af7071fa20 GIT binary patch literal 55938 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 z zc4cf1gPEaadSk>3O-fRJeQ{nQIawmKaj!=6CHE#SgmcQ!-d3;P6}%1j zhx@Vc5Fy6Kf*XJaubEVc_D8k(gA#mqbV9$bMGsR;O)d|(NDYy|yGxYma@+y8ulf|H z{kTA90H*AZW_>FV=+~0qSjneOtOjq+I_MIN ztE4ayE%685SJ)_2pQ@z7i25Sht*`?GkKQ>54x5WZk{ns9&pKygezJupDAjf~qKagO6X}x- z!Qq+l>(oDwLF#M;S{wnLUYk5&DtGJvW7v+6oanF&j{M^t?tOlWOt%Q-I%#srR2ii5j$RLnQi5ppxN`x&`#RG@2y_x0t>5 zP%Jp_uzt0z;GNZZOoDJj#19TKiO9(iMxLCy*P$+bL#|p}-zU@xOj9sMDX*N$7w5i( zvpiocX5^q#kHHQyU@Vp~a41#BNLR5E#U>mV_pfbsbku&q*!=P1q6fFKa?bpF#fVNw{B)-C=6BX54k0aL zM1rtj=4`$38To>k`kM*XQV_u8E#2_1gWIrt!P*dwDVs>qKUL>%$u#EBUyD_GRN z(sZ1`*=(D9X_@Bm3AK8&h#}=w4UsBJ*4>fAx0GirO85BxrO1xs8TqbX)7;kl&Qfp@#`Zf`4CQQ!%9bImET$)q<>rF7PXBm5F$JN*TAe6T~AKXV}OWi902C>z45mBMInZ}#)(I7&(~h}k64{MPzy zsDrqMp)O$XYl9JC1pdMD#ck+z9C&3k&DAdeFR4LU+rM5L+!4{00AJR|; zVGBQ5EO55M%7vW~39n~12az(1obQjGM8SM8#R#&m7o&XLkX4_?!@hg_cv8J7Uw{+q z#TOj<)bn$XXpKc){wc4RFhY(Gwf>BwuiP8$LebOQiJxq8Kk+qF_huoo3nd zLEGS#07Qv{iK81&a2VDb?Z!?>!V6c9ZS#*^Cqgkx?qFW53Xoleo>b*(4V{FPT;rnO z(@PJ<`Ot+f9b!oyRo>N|@W$!BNi~HZ&)4{A!`*ob1zt)47u!&G4K^|gN0A+MX~73( z@_j;zz`(5VW&n)Fy^(KV`v!bNlK0BU`|soI<|@+_~tea8>LdH ztl4+@Q@TL<(RzUnHHgX+O{n&b62t8yu;n^_KR(S5Uaf`vJKfM#T;j-l2^iw@1w?3j zJv>4A4m8g}?52&mfan5eOIPa%Yn%hk$*?-WbSQpL8N{z+AuWC+@CI;{o-%M`Qo0u)jj%jOV#Hh|$D%WMduofKWxPA^u?FsS~w-)Ie)aka6 z)%Kw80;mvY!Q)f1U@#Y9e$tDftqydtDZ0}APbt+4a_a*nSOoALdEM`HF^F+lk`4B4 zUUkSgFJ4dqixzI(i(CgHl}-;xPHYgt|N9voTWT)8`iNBxo`{y~4ps~g z_N`C8yxpr_QTulJ@1{xKuaAf%lh={lDz``eR^Q68&MCgFXiSq4;=iDb$fl!NS2#H6 z*5Z2y_;2h&zs3Da=7ES;n4X^{GY%YeY4LX|TxF?YNL7i>JoEp=@7+mA&BKFL*kRRB z9-s3EYKGmJQ1rW0$%0`-8$v%P%P2i-6r9ET*8>= zBg>UJZJ(z-KGW$X_>+JBs2TgY{$%PO3=lw*VZT_Hd$}YI>&0YOfeZYn^;*1?dQn#h}=s5uZ5*ja<>8css-m-czyTQp_^Ie$#jnvISKjEWy?e zf+vumK{r#C=NA0ERcrA1bMdw-$BKwcyDt-yiI=y?%iuV*SofKfM%2cf&0Yc;QjQ&h$ssD2 zospL&Ec3x+?4($7X8RxHG7MNf*LruU$|A#7&Cq?X7Tn&FdA@}r>W)%_as}c~-Qi14 zFs*NG&l296EJsIKK)lYv4AnXOy`Ma3y4LMKA+pCd*0kt%v4GXPa((RllLA5RoytsP zR!80y-9s~lW=Z}N@%z}u-iB?~qQ`b-MJLy7y)676wanAmx90)rek4E!X>$!dS<2mK z0V}T2ks~A=TCt@o*Oj67Si={!*10D?@>v^;Dn`Axrm^ppdd5kwvfXp+5LNnwEV!

l^q?TH?6op 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 literal 0 HcmV?d00001 diff --git a/assets/189_2.png b/assets/189_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d15313e88668231fff424e9e457ab8c0d36aac3 GIT binary patch literal 216816 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�)l4IfUKCG@S(~GuLK@PBy1D9H;o@7Q*>ai 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 literal 0 HcmV?d00001 diff --git a/basic/array-stack-queue/ext-rotate-array.md b/basic/array-stack-queue/ext-rotate-array.md new file mode 100644 index 0000000..e924810 --- /dev/null +++ b/basic/array-stack-queue/ext-rotate-array.md @@ -0,0 +1,183 @@ +# 189. 旋转数组 + +https://leetcode-cn.com/problems/rotate-array/ + +- [189. 旋转数组](#189-旋转数组) + - [题目描述](#题目描述) + - [方法 1:使用额外空间](#方法-1使用额外空间) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法 2: 巴黎铁塔翻转再翻转](#方法-2-巴黎铁塔翻转再翻转) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + - [方法 3: 循环移位](#方法-3-循环移位) + - [思路](#思路-2) + - [复杂度分析](#复杂度分析-2) + - [代码](#代码-2) + +## 题目描述 + +``` +给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 + +示例 1: + +输入: [1,2,3,4,5,6,7] 和 k = 3 +输出: [5,6,7,1,2,3,4] +解释: +向右旋转 1 步: [7,1,2,3,4,5,6] +向右旋转 2 步: [6,7,1,2,3,4,5] +向右旋转 3 步: [5,6,7,1,2,3,4] +示例 2: + +输入: [-1,-100,3,99] 和 k = 2 +输出: [3,99,-1,-100] +解释: +向右旋转 1 步: [99,-1,-100,3] +向右旋转 2 步: [3,99,-1,-100] +说明: + +尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 +要求使用空间复杂度为 O(1) 的 原地 算法。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/rotate-array +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:使用额外空间 + +### 思路 + +先用一个额外的数组将最后的 k 位保存起来,然后将前面的元素右移 k 位,再用事先保存的 k 位元素填充数组开头。 + +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/189_0.png) + +### 复杂度分析 + +- 时间复杂度:$O(N)$。 +- 空间复杂度:$O(k)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {void} Do not return anything, modify nums in-place instead. + */ +var rotate = function (nums, k) { + const n = nums.length; + k %= n; + if (k === 0) return; + + const reserved = nums.slice(n - k); + + // 前 n-k 个元素右移 k 位 + for (let i = n - k - 1; i >= 0; i--) { + nums[i + k] = nums[i]; + } + + // 用原本的后 k 位填充数组开头 + for (let i = 0; i < reserved.length; i++) { + nums[i] = reserved[i]; + } +}; +``` + +## 方法 2: 巴黎铁塔翻转再翻转 + +### 思路 + +![](https://cdn.jsdelivr.net/gh/suukii/Articles/assets/189_1.png) + +### 复杂度分析 + +- 时间复杂度:$O(N)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {void} Do not return anything, modify nums in-place instead. + */ +var rotate = function (nums, k) { + const n = nums.length; + k %= n; + if (k === 0) return; + + reverse(nums, 0, n - 1); + reverse(nums, 0, k - 1); + reverse(nums, k, n - 1); + + // ******************************** + // 反转某一段数组 + function reverse(arr, l, r) { + while (l < r) { + [arr[l], arr[r]] = [arr[r], arr[l]]; + l++; + r--; + } + } +}; +``` + +## 方法 3: 循环移位 + +### 思路 + +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/189_2.png) + +代码中 count 的来源可以去看[官方题解](https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode-solution-nipk/)的证明。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {void} Do not return anything, modify nums in-place instead. + */ +var rotate = function (nums, k) { + const n = nums.length; + k %= n; + + const count = gcd(k, n); + for (let start = 0; start < count; start++) { + let p = start; + let prev = nums[p]; + + // 从 start 开始跳,再跳回到 start 的时候停止 + // 由于此时不一定遍历到了所有元素,所以 start++ 后再重复步骤 + do { + const next = (p + k) % n; + [prev, nums[next]] = [nums[next], prev]; + p = next; + } while (p !== start); + } + + // ********************************* + // 最大公约数 + function gcd(x, y) { + return y ? gcd(y, x % y) : x; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From e1c17064a9c112339a8b7dd4166455c6d46a1823 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 8 Jan 2021 15:10:08 +0800 Subject: [PATCH 18/44] fix image link --- basic/array-stack-queue/ext-rotate-array.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basic/array-stack-queue/ext-rotate-array.md b/basic/array-stack-queue/ext-rotate-array.md index e924810..589fde1 100644 --- a/basic/array-stack-queue/ext-rotate-array.md +++ b/basic/array-stack-queue/ext-rotate-array.md @@ -93,7 +93,7 @@ var rotate = function (nums, k) { ### 思路 -![](https://cdn.jsdelivr.net/gh/suukii/Articles/assets/189_1.png) +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/189_1.png) ### 复杂度分析 From 22554d746462b5f326bb70a634dfc58f437321ae Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 11 Jan 2021 15:25:53 +0800 Subject: [PATCH 19/44] =?UTF-8?q?add:=201202.=E4=BA=A4=E6=8D=A2=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E4=B8=AD=E7=9A=84=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 +- assets/1202_0.excalidraw | 2849 +++++++++++++++++ assets/1202_0.png | Bin 0 -> 113869 bytes assets/1202_1.png | Bin 0 -> 50555 bytes .../ext-smallest-string-with-swaps.md | 175 + 5 files changed, 3038 insertions(+), 6 deletions(-) create mode 100644 assets/1202_0.excalidraw create mode 100644 assets/1202_0.png create mode 100644 assets/1202_1.png create mode 100644 medium/union-find/ext-smallest-string-with-swaps.md diff --git a/README.md b/README.md index e5a783a..2903e66 100644 --- a/README.md +++ b/README.md @@ -24,20 +24,22 @@ - [高频面试题](#高频面试题) - [前缀树](#前缀树) - [并查集](#并查集) + - [每日一题](#每日一题-5) + - [拓展](#拓展) - [跳表](#跳表) - [剪枝](#剪枝) - - [每日一题](#每日一题-5) - - [字符串匹配](#字符串匹配) - [每日一题](#每日一题-6) + - [字符串匹配](#字符串匹配) + - [每日一题](#每日一题-7) - [拓展题目](#拓展题目) - [堆](#堆) - - [每日一题](#每日一题-7) + - [每日一题](#每日一题-8) - [专题篇](#专题篇) - [二分法](#二分法) - - [每日一题](#每日一题-8) + - [每日一题](#每日一题-9) - [拓展题目](#拓展题目-1) - [滑动窗口](#滑动窗口) - - [每日一题](#每日一题-9) + - [每日一题](#每日一题-10) - [拓展题目](#拓展题目-2) - [位运算](#位运算) - [搜索(BFS, DFS, 回溯)](#搜索bfs-dfs-回溯) @@ -45,7 +47,7 @@ - [动态规划](#动态规划) - [分治](#分治) - [贪心](#贪心) - - [每日一题](#每日一题-10) + - [每日一题](#每日一题-11) - [贪心拓展题目](#贪心拓展题目) - [其他](#其他) @@ -220,10 +222,16 @@ ### 并查集 +#### 每日一题 + - [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) - [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) - [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) +#### 拓展 + +- [x] [1202.交换字符串中的元素](./medium/union-find/ext-smallest-string-with-swaps.md) + ### 跳表 - [ ] [【day-47】1206.设计跳表](./) diff --git a/assets/1202_0.excalidraw b/assets/1202_0.excalidraw new file mode 100644 index 0000000..ecf5ead --- /dev/null +++ b/assets/1202_0.excalidraw @@ -0,0 +1,2849 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 317, + "versionNonce": 80328852, + "isDeleted": false, + "id": "FPXtphg22Iggb3MJhmi4G", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 270, + "y": 61, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 398717484, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 354, + "versionNonce": 1346030252, + "isDeleted": false, + "id": "14-uYjVIrDPAeScE_o9-3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 314, + "y": 60, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 2103233708, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 269, + "versionNonce": 2108524052, + "isDeleted": false, + "id": "SZs1xZjtPff6tkVimes97", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 284, + "y": 66, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 536237868, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 265, + "versionNonce": 577017132, + "isDeleted": false, + "id": "qmqqbowKl4xsNc5ekZyZ_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 330, + "y": 65, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 2080018860, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 332, + "versionNonce": 331064212, + "isDeleted": false, + "id": "athHOz8Gvm10WC_oCHXrD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 183, + "y": 62, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1888713772, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 369, + "versionNonce": 1374752684, + "isDeleted": false, + "id": "WmQRCbb_ne001SNTJSqBL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 227, + "y": 61, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1739265708, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 275, + "versionNonce": 1294602516, + "isDeleted": false, + "id": "EF1_1Fi46lzWqFJZMfMVu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198, + "y": 67, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 2112577836, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 275, + "versionNonce": 2131376684, + "isDeleted": false, + "id": "9qMU5b6Ilrgl6Vh_fcoNK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 242, + "y": 66, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 717118380, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "dyIaT7S0jxoXeZDCivC1-", + "type": "text", + "x": 147, + "y": 64.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1749943852, + "version": 51, + "versionNonce": 2037304980, + "isDeleted": false, + "boundElementIds": null, + "text": "s", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "nVUJPlGmSQUM326mbz504", + "type": "text", + "x": 99, + "y": 111.5, + "width": 59, + "height": 24, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1535402156, + "version": 84, + "versionNonce": 882513068, + "isDeleted": false, + "boundElementIds": null, + "text": "pairs", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "cq2xpUs5diaZs-3doSDWv", + "type": "text", + "x": 175, + "y": 113.5, + "width": 82, + "height": 48, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 2081123116, + "version": 106, + "versionNonce": 155180052, + "isDeleted": false, + "boundElementIds": null, + "text": "[[0,3],\n [1,2]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 43 + }, + { + "type": "rectangle", + "version": 473, + "versionNonce": 273325868, + "isDeleted": false, + "id": "hCoZ9d3wBvVXg2j16yeEG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 472, + "y": 116, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1011688876, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 507, + "versionNonce": 1720924564, + "isDeleted": false, + "id": "aqYPE8sA0e3FhVVr1nzCr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 516, + "y": 115, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 829657132, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 425, + "versionNonce": 1787156908, + "isDeleted": false, + "id": "TqAgem0GBbT3F90wl50z-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 486, + "y": 121, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 996715180, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 418, + "versionNonce": 1285482260, + "isDeleted": false, + "id": "CQpQEq89JGpTjA5kiTAqR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 532, + "y": 120, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 752252204, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 490, + "versionNonce": 1982042516, + "isDeleted": false, + "id": "bco4OUO4o6gx8hO2nf90Z", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 385, + "y": 117, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1931931564, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "uwZsAvqxgd9fe3J7b0XZK" + ] + }, + { + "type": "rectangle", + "version": 519, + "versionNonce": 302276268, + "isDeleted": false, + "id": "-aX6VFzEu-QteNE56x6D4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 429, + "y": 116, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1048844844, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 428, + "versionNonce": 1173828116, + "isDeleted": false, + "id": "jhq8_p_I3rnTx7JQ1eW3e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 400, + "y": 122, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 702018732, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 425, + "versionNonce": 500934956, + "isDeleted": false, + "id": "xKMtOy0hNDu9sZg8sFrSi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 444, + "y": 121, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1657569068, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 487, + "versionNonce": 2112868244, + "isDeleted": false, + "id": "TAjdDZlLAlJLTNTO5awiY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 472, + "y": 185, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1372305836, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 516, + "versionNonce": 1969595308, + "isDeleted": false, + "id": "D8ivz0p49JhmNIPvfh6gy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 516, + "y": 184, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1107272748, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 439, + "versionNonce": 939048212, + "isDeleted": false, + "id": "WEDyzImTDBX083XJzsATI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 486, + "y": 190, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 156384940, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 427, + "versionNonce": 1858883116, + "isDeleted": false, + "id": "Jn7gR8hpe7JOBIq0bByZT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 532, + "y": 189, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 812484908, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 501, + "versionNonce": 946093844, + "isDeleted": false, + "id": "yfKJKeSmlUjpA2Erz61nr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 385, + "y": 186, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 448496556, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "vsoMef5d6NAwUc11snhDc" + ] + }, + { + "type": "rectangle", + "version": 536, + "versionNonce": 2035517460, + "isDeleted": false, + "id": "YbdMfwgXorwGvQq8mVVK9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 429, + "y": 185, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 778448428, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 440, + "versionNonce": 496481068, + "isDeleted": false, + "id": "Tz30bYsdWXV4SgabX_dxN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 400, + "y": 191, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 2086111404, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 442, + "versionNonce": 1867605396, + "isDeleted": false, + "id": "HZJG8jhErMWE3xah10udN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 444, + "y": 190, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1748603692, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "uwZsAvqxgd9fe3J7b0XZK", + "type": "arrow", + "x": 249, + "y": 124, + "width": 127, + "height": 10.72240187735818, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1349930412, + "version": 164, + "versionNonce": 2106640172, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 127, + 10.72240187735818 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "elementId": "bco4OUO4o6gx8hO2nf90Z", + "focus": -0.17340081393049345, + "gap": 9 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "vsoMef5d6NAwUc11snhDc", + "type": "arrow", + "x": 244, + "y": 153, + "width": 130, + "height": 44.280847306561384, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 909621292, + "version": 143, + "versionNonce": 482804140, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 130, + 44.280847306561384 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "elementId": "yfKJKeSmlUjpA2Erz61nr", + "focus": -0.2144965562479505, + "gap": 11 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 669, + "versionNonce": 957330732, + "isDeleted": false, + "id": "Jw_rJqHQlwchqA04yc101", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 146, + "y": 391, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1701302956, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 580, + "versionNonce": 1758626708, + "isDeleted": false, + "id": "2AVTQUUER9V7YHnZS5o08", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 162, + "y": 396, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 481336620, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 719, + "versionNonce": 641216428, + "isDeleted": false, + "id": "8zZkLBUTAWWFtgp-A2K6R", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 278, + "y": 393, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 897324972, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "uwZsAvqxgd9fe3J7b0XZK" + ] + }, + { + "type": "text", + "version": 659, + "versionNonce": 476377364, + "isDeleted": false, + "id": "18MDlXf4vbYud0PYRnhc9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 293, + "y": 398, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1274298924, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 676, + "versionNonce": 2104318508, + "isDeleted": false, + "id": "DzcOICMTQkffY22Se6dGf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 190, + "y": 392, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1728257196, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 628, + "versionNonce": 1582149268, + "isDeleted": false, + "id": "piCQGFxfEJFgpDeVz9ZqV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 204, + "y": 397, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 542287660, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 696, + "versionNonce": 966341804, + "isDeleted": false, + "id": "qBmuTxrmqM9geIHJK_ATs", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 234, + "y": 393, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1280106924, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 602, + "versionNonce": 792902676, + "isDeleted": false, + "id": "27TuhfHvzbBvw4teKraIL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 249, + "y": 398, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 572247084, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "y5xN2boxo49omRQVQKbHs", + "type": "arrow", + "x": 266.5867597073317, + "y": 297.8778326064348, + "width": 32.58675970733168, + "height": 74.12216739356518, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1672046252, + "version": 188, + "versionNonce": 1675265172, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + -32.58675970733168, + 74.12216739356518 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "rx0XE-wHwShzWuOV6s7Mv", + "type": "text", + "x": 273, + "y": 322.5, + "width": 300, + "height": 52, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 94351660, + "version": 336, + "versionNonce": 1703300140, + "isDeleted": false, + "boundElementIds": null, + "text": "因此,对相同色块进行分别排序后\n就能得到结果", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 47 + }, + { + "id": "TncKu8wLm5y3IiBR7k16k", + "type": "rectangle", + "x": 70, + "y": -3, + "width": 517, + "height": 464, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1466477484, + "version": 172, + "versionNonce": 1134881556, + "isDeleted": false, + "boundElementIds": null + }, + { + "type": "rectangle", + "version": 353, + "versionNonce": 196029332, + "isDeleted": false, + "id": "A11OZWeOrQfLDFXkSV0wC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 270, + "y": 567, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 327548972, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 390, + "versionNonce": 718931884, + "isDeleted": false, + "id": "ssTYdjs-oX9FRKzdHDFZl", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 314, + "y": 566, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 296557228, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 305, + "versionNonce": 225220884, + "isDeleted": false, + "id": "PhJswkwiYlFBZLpzxDwfp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 284, + "y": 572, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 554493228, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 301, + "versionNonce": 1075065388, + "isDeleted": false, + "id": "gcHRhxTtu0XcMMkzQsT5I", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 330, + "y": 571, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1997496236, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 368, + "versionNonce": 538990228, + "isDeleted": false, + "id": "PZ2YA1xAk5wKjXeS7Hlwa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 183, + "y": 568, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 199133740, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 405, + "versionNonce": 832900268, + "isDeleted": false, + "id": "WntVtf-n8-AOVN0tMrYG6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 227, + "y": 567, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1113875628, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 311, + "versionNonce": 1887462420, + "isDeleted": false, + "id": "y4v_Y4zYqKgYo7HkEJVId", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198, + "y": 573, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 273346348, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 311, + "versionNonce": 557225772, + "isDeleted": false, + "id": "rEjJIwHWSn979Ahfl9sT3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 242, + "y": 572, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 637282732, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "KL_JxBwrnL3B1YmaZAjNl", + "type": "text", + "x": 147, + "y": 570.5, + "width": 12, + "height": 24, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1627379500, + "version": 87, + "versionNonce": 612549012, + "isDeleted": false, + "boundElementIds": null, + "text": "s", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "VL_BMVfhO9dPLclyCK4u4", + "type": "text", + "x": 99, + "y": 617.5, + "width": 59, + "height": 24, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 366468012, + "version": 120, + "versionNonce": 1798492588, + "isDeleted": false, + "boundElementIds": null, + "text": "pairs", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "glbn25lcgRmrND997YT9M", + "type": "text", + "x": 175, + "y": 619.5, + "width": 82, + "height": 72, + "angle": 0, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1700932268, + "version": 154, + "versionNonce": 861761300, + "isDeleted": false, + "boundElementIds": null, + "text": "[[0,3],\n [1,2],\n [0,2]]", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 67 + }, + { + "type": "rectangle", + "version": 521, + "versionNonce": 1145813036, + "isDeleted": false, + "id": "0zFfxtPCC_zfzA4At9duG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 474, + "y": 605, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1292915372, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 555, + "versionNonce": 1099706516, + "isDeleted": false, + "id": "7n3_8k4Jx59iWgh96MRI2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 518, + "y": 604, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 2068389164, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 473, + "versionNonce": 284938924, + "isDeleted": false, + "id": "XgEwmRuV8UDNdIGnAWNuo", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 488, + "y": 610, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 755275692, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 466, + "versionNonce": 1801518612, + "isDeleted": false, + "id": "O7dmHgQfs-hTuzmC0fPah", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 534, + "y": 609, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1047314988, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 537, + "versionNonce": 902077740, + "isDeleted": false, + "id": "6gf-xtIniwtuE1L5vYoZv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 387, + "y": 606, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1986763948, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "ooPrTE-XjlMtiz-5fLd3-" + ] + }, + { + "type": "rectangle", + "version": 567, + "versionNonce": 202381228, + "isDeleted": false, + "id": "fW0my0cI5z0e69tAhGzUz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 431, + "y": 605, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 782968620, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 476, + "versionNonce": 241142036, + "isDeleted": false, + "id": "sKNxQHXwQsCsuHBh3X7_n", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 402, + "y": 611, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 2073387436, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 473, + "versionNonce": 805847596, + "isDeleted": false, + "id": "eTRE_NjHmBHNuspTgQlsX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 446, + "y": 610, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1414810668, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 546, + "versionNonce": 269303084, + "isDeleted": false, + "id": "zsZqcH5sQo6nHeUpHdS-_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 476, + "y": 656, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 773742100, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 575, + "versionNonce": 1413789612, + "isDeleted": false, + "id": "EZNvlvbxWDKbrhBchxjIb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 520, + "y": 655, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 810646420, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 498, + "versionNonce": 1219027500, + "isDeleted": false, + "id": "2fTXHMkwZUYhjwb7TG6SP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 490, + "y": 661, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 155511060, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 486, + "versionNonce": 606321836, + "isDeleted": false, + "id": "HLEs8_50Ii6MQRfHmCE8v", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 536, + "y": 660, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 477013652, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 562, + "versionNonce": 222286228, + "isDeleted": false, + "id": "eKMJyyrsDHbCRepZPt2D0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 389, + "y": 657, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1854190612, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "VebfbGhpd8488QIk0ozA-" + ] + }, + { + "type": "rectangle", + "version": 595, + "versionNonce": 1908769196, + "isDeleted": false, + "id": "DHWTECqTxNilwiIJQzkdg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 433, + "y": 656, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 2105348500, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 499, + "versionNonce": 1333816364, + "isDeleted": false, + "id": "xdPnGvxGnagB2qecxwtUh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 404, + "y": 662, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 411942676, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 501, + "versionNonce": 997852844, + "isDeleted": false, + "id": "KXifC1TtlSjPH9yxC9nc6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 448, + "y": 661, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 942455956, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "ooPrTE-XjlMtiz-5fLd3-", + "type": "arrow", + "x": 249, + "y": 630, + "width": 129, + "height": 3.2140153744048803, + "angle": 0, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1123067308, + "version": 249, + "versionNonce": 1221590676, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 129, + -3.2140153744048803 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "elementId": "6gf-xtIniwtuE1L5vYoZv", + "focus": -0.17340081393049164, + "gap": 9 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "VebfbGhpd8488QIk0ozA-", + "type": "arrow", + "x": 249, + "y": 656, + "width": 134, + "height": 16.301519090170586, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1010629804, + "version": 248, + "versionNonce": 1934657324, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 134, + 16.301519090170586 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "focus": -0.08111360757199602, + "gap": 6, + "elementId": "eKMJyyrsDHbCRepZPt2D0" + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "ar_zxBYV8uh7OL7opKAHg", + "type": "arrow", + "x": 239.68644306510686, + "y": 889.0931957736611, + "width": 0.17079434472600497, + "height": 75.25602504555775, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 572694316, + "version": 304, + "versionNonce": 1703760660, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.17079434472600497, + 75.25602504555775 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "6kytkpqiES_5EcjfgH1xo", + "focus": 1.1916156552217554, + "gap": 15.313556934893143 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "6kytkpqiES_5EcjfgH1xo", + "type": "text", + "x": 255, + "y": 898.5, + "width": 160, + "height": 26, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1186053524, + "version": 302, + "versionNonce": 49551404, + "isDeleted": false, + "boundElementIds": [ + "ar_zxBYV8uh7OL7opKAHg" + ], + "text": "在相同色块内排序", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 21 + }, + { + "id": "01yzKwIenpELkyQuxeVzv", + "type": "rectangle", + "x": 69, + "y": 490, + "width": 517, + "height": 546, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 414391700, + "version": 237, + "versionNonce": 1461669524, + "isDeleted": false, + "boundElementIds": null + }, + { + "type": "rectangle", + "version": 576, + "versionNonce": 850937260, + "isDeleted": false, + "id": "tafKsubJXQ6tbVjQEZVUq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 479, + "y": 711, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 398986644, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "rectangle", + "version": 605, + "versionNonce": 1836757036, + "isDeleted": false, + "id": "0GU8-yEjZ3CvRsI1eqIY8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 523, + "y": 710, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 672742164, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 528, + "versionNonce": 697027244, + "isDeleted": false, + "id": "qx4wdEv_kmqvEj5pvknUz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 493, + "y": 716, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1088993428, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 516, + "versionNonce": 697668908, + "isDeleted": false, + "id": "6qxcrIRdBkS2px5Rq3enq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 539, + "y": 715, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1575781908, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 595, + "versionNonce": 1394006444, + "isDeleted": false, + "id": "5gQRK9FNJlZkZBjGT-zNk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 392, + "y": 712, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 337290132, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "-LejJd3ozilHYLnOUl-ix" + ] + }, + { + "type": "rectangle", + "version": 629, + "versionNonce": 1492874924, + "isDeleted": false, + "id": "OZ937vPy1GUFaFKF9avZ7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 436, + "y": 711, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1772687636, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Td7q8p2xs3wQt1angQ1WM" + ] + }, + { + "type": "text", + "version": 535, + "versionNonce": 1567298732, + "isDeleted": false, + "id": "7IAIliFGIlKYbosM9Q4_g", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 407, + "y": 717, + "strokeColor": "#d9480f", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 772656788, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 534, + "versionNonce": 1996201772, + "isDeleted": false, + "id": "gFtemXRbRc_ony2x-2uPw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 451, + "y": 716, + "strokeColor": "#0b7285", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1375656980, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "-LejJd3ozilHYLnOUl-ix", + "type": "arrow", + "x": 254, + "y": 682, + "width": 124.15870390087366, + "height": 41.90341134632956, + "angle": 0, + "strokeColor": "#5c940d", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 448519316, + "version": 287, + "versionNonce": 288457620, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + 124.15870390087366, + 41.90341134632956 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "focus": -0.23507264585362692, + "gap": 13.841296099126339, + "elementId": "5gQRK9FNJlZkZBjGT-zNk" + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "Td7q8p2xs3wQt1angQ1WM", + "type": "arrow", + "x": 428, + "y": 760, + "width": 73.12124352691376, + "height": 68.95993873924021, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "round", + "seed": 1789822100, + "version": 64, + "versionNonce": 1604164116, + "isDeleted": false, + "boundElementIds": null, + "points": [ + [ + 0, + 0 + ], + [ + -73.12124352691376, + 68.95993873924021 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "OZ937vPy1GUFaFKF9avZ7", + "focus": -0.12635220752528603, + "gap": 15 + }, + "endBinding": { + "elementId": "H0Y1RZgpOBE9HkdZwHtvm", + "focus": 0.14579429633323204, + "gap": 4.878756473086241 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "ENuAn9xubxzZlkcXtZzsp", + "type": "text", + "x": 94, + "y": 761.5, + "width": 300, + "height": 52, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1475676436, + "version": 252, + "versionNonce": 161085204, + "isDeleted": false, + "boundElementIds": [ + "Td7q8p2xs3wQt1angQ1WM" + ], + "text": "两种色块有交集,所以可以组合,\n变成一种色块", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 47 + }, + { + "type": "rectangle", + "version": 638, + "versionNonce": 1562364588, + "isDeleted": false, + "id": "Sc7i2pXREIVMbroZSJpFJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 264, + "y": 832, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1056003988, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Td7q8p2xs3wQt1angQ1WM" + ] + }, + { + "type": "rectangle", + "version": 666, + "versionNonce": 640663852, + "isDeleted": false, + "id": "H0Y1RZgpOBE9HkdZwHtvm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 308, + "y": 831, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1871267092, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Td7q8p2xs3wQt1angQ1WM" + ] + }, + { + "type": "text", + "version": 587, + "versionNonce": 307667116, + "isDeleted": false, + "id": "0SYH-nCzx625BOoFOBwcm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 278, + "y": 837, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1908900500, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 575, + "versionNonce": 513125164, + "isDeleted": false, + "id": "aHGglBSzsRB3J9p_tOnMj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 324, + "y": 836, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1549930516, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 654, + "versionNonce": 73292332, + "isDeleted": false, + "id": "uB5qW3e4rj4XtHwUMwMc-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 177, + "y": 833, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 2135879060, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "-LejJd3ozilHYLnOUl-ix" + ] + }, + { + "type": "rectangle", + "version": 687, + "versionNonce": 1718472748, + "isDeleted": false, + "id": "viZASm3cM_0F1sQ9mryTf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 221, + "y": 832, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1002707732, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 594, + "versionNonce": 1461381804, + "isDeleted": false, + "id": "sSPhgscB9u1xAtz6hiuMw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 192, + "y": 838, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1547147412, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 593, + "versionNonce": 406893868, + "isDeleted": false, + "id": "UQc3rfEW3Ctzl0csBJfQ7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 236, + "y": 837, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1818191380, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 730, + "versionNonce": 319371540, + "isDeleted": false, + "id": "oP7A8AVdqCsBC9rhV2jg-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 165, + "y": 985, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 875633300, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "Td7q8p2xs3wQt1angQ1WM" + ] + }, + { + "type": "rectangle", + "version": 760, + "versionNonce": 1745981996, + "isDeleted": false, + "id": "g0PbQl-gtNCYgfLXFjTh0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 209, + "y": 984, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 1943960880, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 681, + "versionNonce": 153679508, + "isDeleted": false, + "id": "XcBZofbNxs4UOxrMPof_T", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 179, + "y": 990, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1306044436, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "a", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 669, + "versionNonce": 855010476, + "isDeleted": false, + "id": "s7l87EuDrHMhpl_wscIAu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 225, + "y": 989, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 1770998576, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "b", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "rectangle", + "version": 785, + "versionNonce": 1869939732, + "isDeleted": false, + "id": "CD_bXrD5oqrDPKJNjyMXv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 296, + "y": 984, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 970876208, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [ + "-LejJd3ozilHYLnOUl-ix" + ] + }, + { + "type": "rectangle", + "version": 810, + "versionNonce": 828110636, + "isDeleted": false, + "id": "gOLdMpXAAA33R5kahieIB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253, + "y": 985, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 42, + "height": 34, + "seed": 909280660, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [] + }, + { + "type": "text", + "version": 726, + "versionNonce": 467886484, + "isDeleted": false, + "id": "LKK05ZGye2oT6AfcQbW66", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 311, + "y": 989, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 738908464, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "d", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "type": "text", + "version": 714, + "versionNonce": 262943148, + "isDeleted": false, + "id": "9329oeTC0U9ynoHJ8gpkw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 268, + "y": 990, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "width": 12, + "height": 24, + "seed": 41202452, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElementIds": [], + "fontSize": 20, + "fontFamily": 3, + "text": "c", + "baseline": 19, + "textAlign": "center", + "verticalAlign": "middle" + }, + { + "id": "8JvPbBSOQ1P_EAGU5usts", + "type": "text", + "x": 94, + "y": 4.5, + "width": 59, + "height": 24, + "angle": 0, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1619911572, + "version": 51, + "versionNonce": 435893268, + "isDeleted": false, + "boundElementIds": null, + "text": "e.g.1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "2bRLAtYgw4FbSeQZfhMIx", + "type": "text", + "x": 87, + "y": 507.5, + "width": 59, + "height": 24, + "angle": 0, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 114654356, + "version": 20, + "versionNonce": 2084380588, + "isDeleted": false, + "boundElementIds": null, + "text": "e.g.2", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19 + }, + { + "id": "OvR4R63bV_1xK4bZZV7P2", + "type": "text", + "x": 184, + "y": 253.5, + "width": 300, + "height": 26, + "angle": 0, + "strokeColor": "#495057", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "strokeSharpness": "sharp", + "seed": 1569118868, + "version": 130, + "versionNonce": 1502933932, + "isDeleted": false, + "boundElementIds": null, + "text": "由于色块相同的格子可以自由交换", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 21 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + } +} \ No newline at end of file diff --git a/assets/1202_0.png b/assets/1202_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4ec478f2eec28137fb902fd4fe3736474ba5b5 GIT binary patch literal 113869 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

@o-_f;JAyHOlBt0N#xNS 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 literal 0 HcmV?d00001 diff --git a/assets/1202_1.png b/assets/1202_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5624ad0bc15cbbadb466bfe1b974fad051866011 GIT binary patch literal 50555 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 literal 0 HcmV?d00001 diff --git a/medium/union-find/ext-smallest-string-with-swaps.md b/medium/union-find/ext-smallest-string-with-swaps.md new file mode 100644 index 0000000..bdfb095 --- /dev/null +++ b/medium/union-find/ext-smallest-string-with-swaps.md @@ -0,0 +1,175 @@ +# 1202. 交换字符串中的元素 + +https://leetcode-cn.com/problems/smallest-string-with-swaps/ + +- [1202. 交换字符串中的元素](#1202-交换字符串中的元素) + - [题目描述](#题目描述) + - [方法 1:并查集](#方法-1并查集) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + +## 题目描述 + +``` +给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 + +你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 + +返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 + +  + +示例 1: + +输入:s = "dcab", pairs = [[0,3],[1,2]] +输出:"bacd" +解释: +交换 s[0] 和 s[3], s = "bcad" +交换 s[1] 和 s[2], s = "bacd" +示例 2: + +输入:s = "dcab", pairs = [[0,3],[1,2],[0,2]] +输出:"abcd" +解释: +交换 s[0] 和 s[3], s = "bcad" +交换 s[0] 和 s[2], s = "acbd" +交换 s[1] 和 s[2], s = "abcd" +示例 3: + +输入:s = "cba", pairs = [[0,1],[1,2]] +输出:"abc" +解释: +交换 s[0] 和 s[1], s = "bca" +交换 s[1] 和 s[2], s = "bac" +交换 s[0] 和 s[1], s = "abc" +  + +提示: + +1 <= s.length <= 10^5 +0 <= pairs.length <= 10^5 +0 <= pairs[i][0], pairs[i][1] < s.length +s 中只含有小写英文字母 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/smallest-string-with-swaps +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:并查集 + +### 思路 + +换个思路,如果字符串 s 中的所有字符都可以随意互换,那我们只需要对 s 进行排序就可以得到结果了。 + +但字符串并不是所有字符都可随意互换,pairs  中的一对索引表示这两处的字符可以互换,但如果其中两对索引有重叠,则说明这三处的字符都可以随意互换,如果我们将这三个索引处的字符进行排序后再分别填充回去,也就能得到想要的结果了。 + +剩下的问题就是 + +1. 如何找出字符可以随意互换的区域? +2. 如何重新填充字符? + +第一个问题可以用并查集来解决,关于并查集这里就不详细展开了。通过并查集处理我们可以将字符串 s 分为若干个区域,每个区域内的字符都是可以随意互换的,我们只需要分别对每个区域中的字符进行排序就可以了。 + +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/1202_0.png) + +第二个问题,要重新填充字符,我们需要知道当前索引属于哪个区域,以及当前区域有哪些字符。前者可以通过并查集的查找功能,后者可以使用一个哈希表来存储,使用并查集中每个不交集的代表元来作为哈希表的 key,当前区域内的所有字符作为 value。当然也可以修改并查集的结构,把数据直接存储在并查集中。 + +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/1202_1.png) + +最后一步就是填充结果字符串。先对 map 中的字符进行分组排序,然后遍历 s 字符串,对于每个索引的处理是:先判断当前索引处于哪个不交集中,然后在 map 中找到这个不交集中的所有字符,取出字典序最小的字符,填充当前索引。 + +### 复杂度分析 + +| 操作 | 时间复杂度 | 空间复杂度 | +| -------------- | ----------------------------------------------------------------------- | ---------- | +| 构建并查集 | $O(M*α(N))$ | $O(N)$ | +| 构建哈希表 | $O(N*α(N))$, 并查集查询时间 $O(α(N))$,一共查询了 N 次 | $O(N)$ | +| 字符排序 | $O(NlogN)$, 最坏情况字符串 s 的所有字符都可互换,即对整个字符串进行排序 | $O(1)$ | +| 构建结果字符串 | $O(N*α(N))$ | $O(1)$ | +| 总计 | $O((M + N)*α(N) + NlogN)$ | $O(N)$ | + +- M 为 pairs 长度,N 为字符串 s 的长度。 + +### 代码 + +TypeScript Code + +```js +function smallestStringWithSwaps(s: string, pairs: number[][]): string { + if (pairs.length === 0) return s; + + const uf: UnionFind = new UnionFind(s.length); + for (const [x, y] of pairs) { + uf.unionSet(x, y); + } + + const map: { + [prop: string]: string[]; + } = {}; + + for (let i = 0; i < s.length; i++) { + const parent: number = uf.findSet(i); + if (!(parent in map)) map[parent] = []; + map[parent].push(s[i]); + } + + for (const k in map) { + map[k].sort( + (a: string, b: string): number => b.charCodeAt(0) - a.charCodeAt(0), + ); + } + + const res: string[] = Array(s.length); + for (let i = 0; i < s.length; i++) { + const parent: number = uf.findSet(i); + const strings: string[] = map[parent]; + res[i] = strings.pop(); + } + + return res.join(''); +} + +// ************************************************* + +class UnionFind { + private parents: Array; + private rank: Array; + private numOfSets: number; + + constructor(size: number) { + this.parents = Array(size) + .fill(0) + .map((_, i) => i); + this.rank = Array(size).fill(0); + this.numOfSets = size; + } + + size(): number { + return this.numOfSets; + } + + findSet(x: number): number { + if (x !== this.parents[x]) { + this.parents[x] = this.findSet(this.parents[x]); + } + return this.parents[x]; + } + + unionSet(x: number, y: number): void { + const px: number = this.findSet(x); + const py: number = this.findSet(y); + if (px === py) return; + if (this.rank[px] > this.rank[py]) { + this.parents[py] = px; + } else { + this.parents[px] = py; + this.rank[px] === this.rank[py] && ++this.rank[py]; + } + this.numOfSets--; + } +} +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 8b13810a2a0c5e06ae66d163cc2877186ec2f2b8 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 5 Feb 2021 22:59:04 +0800 Subject: [PATCH 20/44] feat: Add C++ code for 66.plus-one --- basic/array-stack-queue/01.plus-one.md | 67 +++++++++++++++++++------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/basic/array-stack-queue/01.plus-one.md b/basic/array-stack-queue/01.plus-one.md index 1200a5d..f0c341e 100644 --- a/basic/array-stack-queue/01.plus-one.md +++ b/basic/array-stack-queue/01.plus-one.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/plus-one +- [66.加一](#66加一) + - [题目描述](#题目描述) + - [方法 1](#方法-1) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码 (JS/C++)](#代码-jsc) + ## 题目描述 ``` @@ -27,7 +34,9 @@ https://leetcode-cn.com/problems/plus-one 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 思路 +## 方法 1 + +### 思路 在数组上做竖式加法,用 `carry` 来表示进位,反向遍历数组即可。 @@ -40,12 +49,14 @@ https://leetcode-cn.com/problems/plus-one 如果遍历结束后 `carry` 大于 0,还需要在数组前面补一位。 -## 复杂度 +### 复杂度 + +- 时间复杂度:$O(N)$, N 为数组长度。 +- 空间复杂度:$O(1)$。 -- 时间复杂度:$O(N)$, N 为数组长度。 -- 空间复杂度:$O(1)$。 +### 代码 (JS/C++) -## 代码 +JavaScript Code ```js /** @@ -53,19 +64,41 @@ https://leetcode-cn.com/problems/plus-one * @return {number[]} */ var plusOne = function (digits) { - let carry = 1, - sum = 0, - index = digits.length - 1; - - while (carry > 0 && index > -1) { - sum = digits[index] + 1; - carry = Math.floor(sum / 10); - digits[index] = sum % 10; - index--; - } + let carry = 1, + sum = 0, + index = digits.length - 1; + + while (carry > 0 && index > -1) { + sum = digits[index] + 1; + carry = Math.floor(sum / 10); + digits[index] = sum % 10; + index--; + } + + carry && digits.unshift(carry); - carry && digits.unshift(carry); + return digits; +}; +``` + +C++ Code - return digits; +```cpp +class Solution { +public: + vector plusOne(vector& digits) { + vector res(digits.size()); + + int carry = 1; + for (int i = digits.size() - 1; i >= 0; i--) { + res[i] = (digits[i] + carry) % 10; + carry = ((digits[i] + carry) / 10) >> 0; + } + if (carry > 0) { + res.insert(res.begin(), carry); + } + + return res; + } }; ``` From aabc8fbec5291724635d73c901773d94a0cfbb21 Mon Sep 17 00:00:00 2001 From: suukii Date: Sat, 6 Feb 2021 09:15:30 +0800 Subject: [PATCH 21/44] feat: Add C++ code for 768.max-chunks-to-make-sorted-ii --- .../06.max-chunks-to-make-sorted-ii.md | 167 ++++++++++++------ 1 file changed, 111 insertions(+), 56 deletions(-) diff --git a/basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md b/basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md index 31f02d1..738ebaa 100644 --- a/basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md +++ b/basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md @@ -2,17 +2,17 @@ https://leetcode-cn.com/problems/max-chunks-to-make-sorted-ii/ -- [768. 最多能完成排序的块 II](#768dot-最多能完成排序的块-ii) +- [768. 最多能完成排序的块 II](#768-最多能完成排序的块-ii) - [题目描述](#题目描述) - [方法 1: 滑动窗口](#方法-1-滑动窗口) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) - - [方法 2: 单调递增栈](#方法-2-单调递增栈) + - [代码 (JS/C++)](#代码-jsc) + - [方法 2: 单调栈](#方法-2-单调栈) - [思路](#思路-1) - [图解](#图解) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码(JS/C++)](#代码jsc) ## 题目描述 @@ -65,10 +65,10 @@ Each k for which some permutation of arr[:k] is equal to sorted(arr)[:k] is wher ### 复杂度分析 -- 时间复杂度:$O(NlogN)$,N 为数组长度,数组排序时间认为是 $NlogN$,滑动窗口遍历数组时间为 $N$。 -- 空间复杂度:$O(N)$,N 为数组长度。 +- 时间复杂度:$O(NlogN)$,N 为数组长度,数组排序时间认为是 $NlogN$,滑动窗口遍历数组时间为 $N$。 +- 空间复杂度:$O(N)$,N 为数组长度。 -### 代码 +### 代码 (JS/C++) JavaScript Code @@ -78,28 +78,53 @@ JavaScript Code * @return {number} */ var maxChunksToSorted = function (arr) { - const sorted = [...arr]; - sorted.sort((a, b) => a - b); + const sorted = [...arr]; + sorted.sort((a, b) => a - b); - let count = 0, - sum1 = 0, - sum2 = 0; + let count = 0, + sum1 = 0, + sum2 = 0; - for (let i = 0; i < arr.length; i++) { - sum1 += arr[i]; - sum2 += sorted[i]; + for (let i = 0; i < arr.length; i++) { + sum1 += arr[i]; + sum2 += sorted[i]; - if (sum1 === sum2) { - count++; - sum1 = sum2 = 0; // 这行不要也可以啦 - } + if (sum1 === sum2) { + count++; + sum1 = sum2 = 0; // 这行不要也可以啦 } + } - return count; + return count; }; ``` -## 方法 2: 单调递增栈 +C++ Code + +```cpp +class Solution { +public: + int maxChunksToSorted(vector& arr) { + int n = arr.size(); + vector sorted = arr; + sort(sorted.begin(), sorted.end()); + + long int arrSum = 0; + long int sortedSum = 0; + int chunkCount = 0; + + for (int i = 0; i < n; i++) { + arrSum += arr[i]; + sortedSum += sorted[i]; + if (arrSum == sortedSum) chunkCount++; + } + + return chunkCount; + } +}; +``` + +## 方法 2: 单调栈 ### 思路 @@ -107,11 +132,11 @@ var maxChunksToSorted = function (arr) { 可以得到的一个结论是,每个分块中的数字相对于前一个分块都是递增的(因为有重复数字,所以也可能是相同),下一个分块中的所有数字都会大于等于上一个分块中的所有数字。 -- 因为题目要求能分的最多的块数,所以我们在分块的时候要尽量把块分小,这样就能分得比较多。 +- 因为题目要求能分的最多的块数,所以我们在分块的时候要尽量把块分小,这样就能分得比较多。 -- 在遍历数组的过程中,如果一个数字比之前所有分块的最大值都要大,我们就把它作为一个新的分块。 +- 在遍历数组的过程中,如果一个数字比之前所有分块的最大值都要大,我们就把它作为一个新的分块。 -- 如果数字小于之前某些分块的最大值,那这些分块都要被合成一个分块(保持栈的单调递增)。 +- 如果数字小于之前某些分块的最大值,那这些分块都要被合成一个分块(保持栈的单调递增)。 ### 图解 @@ -123,33 +148,33 @@ var maxChunksToSorted = function (arr) { ### 复杂度分析 -- 时间复杂度:$O(N)$,N 为数组长度。 -- 空间复杂度:$O(N)$,N 为数组长度,单调栈消耗的空间。 +- 时间复杂度:$O(N)$,N 为数组长度。 +- 空间复杂度:$O(N)$,N 为数组长度,单调栈消耗的空间。 -### 代码 +### 代码(JS/C++) JavaScript Code ```js class Stack { - constructor() { - this.list = []; - } - push(val) { - this.list.push(val); - } - pop() { - return this.list.pop(); - } - empty() { - return this.list.length === 0; - } - peek() { - return this.list[this.list.length - 1]; - } - size() { - return this.list.length; - } + constructor() { + this.list = []; + } + push(val) { + this.list.push(val); + } + pop() { + return this.list.pop(); + } + empty() { + return this.list.length === 0; + } + peek() { + return this.list[this.list.length - 1]; + } + size() { + return this.list.length; + } } /** @@ -157,21 +182,51 @@ class Stack { * @return {number} */ var maxChunksToSorted = function (arr) { - const stack = new Stack(); + const stack = new Stack(); - for (let i = 0; i < arr.length; i++) { - if (stack.empty() || stack.peek() <= arr[i]) { - stack.push(arr[i]); - } else { - const temp = stack.pop(); + for (let i = 0; i < arr.length; i++) { + if (stack.empty() || stack.peek() <= arr[i]) { + stack.push(arr[i]); + } else { + const temp = stack.pop(); - while (stack.peek() > arr[i]) { - stack.pop(); - } + while (stack.peek() > arr[i]) { + stack.pop(); + } - stack.push(temp); + stack.push(temp); + } + } + return stack.size(); +}; +``` + +C++ Code + +```cpp +class Solution { +public: + int maxChunksToSorted(vector& arr) { + stack blocks; + + for (int i = 0; i < arr.size(); i++) { + if (blocks.empty() || blocks.top() <= arr[i]) { + // a new chunk + blocks.push(arr[i]); + } + else { + int topNum = blocks.top(); + blocks.pop(); + + // combine chunks + while (!blocks.empty() && blocks.top() > arr[i]) { + blocks.pop(); + } + blocks.push(topNum); + } } + + return blocks.size(); } - return stack.size(); }; ``` From 0c5ac40c2435b1cde80960c9214831c1566e8ed9 Mon Sep 17 00:00:00 2001 From: suukii Date: Sat, 6 Feb 2021 10:17:17 +0800 Subject: [PATCH 22/44] feat: Add C++ code for 821 --- assets/821_0.excalidraw | 3335 ----------------- assets/821_1.excalidraw | 3335 ----------------- .../02.shortest-distance-to-a-character.md | 355 +- 3 files changed, 238 insertions(+), 6787 deletions(-) delete mode 100644 assets/821_0.excalidraw delete mode 100644 assets/821_1.excalidraw diff --git a/assets/821_0.excalidraw b/assets/821_0.excalidraw deleted file mode 100644 index 80c203e..0000000 --- a/assets/821_0.excalidraw +++ /dev/null @@ -1,3335 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "id": "KKdqwy_VPgyTkz34zBEGo", - "type": "rectangle", - "x": 182.62500000000026, - "y": 714.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1770538122, - "version": 54, - "versionNonce": 1075938326, - "isDeleted": false, - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "id": "EwqYu_GPDNVAlhmYrLvzT", - "type": "text", - "x": 199.12500000000026, - "y": 717.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1977819978, - "version": 21, - "versionNonce": 667618902, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "IaDXhKlbNNtaQ1rKX5C5T", - "type": "rectangle", - "x": 223.62500000000026, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1492396554, - "version": 70, - "versionNonce": 2135085974, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "qKO5U44OQlQ54t6CUQlzW", - "type": "text", - "x": 237.12500000000026, - "y": 716.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 699816138, - "version": 43, - "versionNonce": 907014358, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "DjuhuUWv-QjRXTfO_VS4a", - "type": "rectangle", - "x": 264.6250000000002, - "y": 714.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1740943242, - "version": 87, - "versionNonce": 1741121046, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "NmqJVTLIoW956-00f71Ld", - "type": "text", - "x": 278.6250000000002, - "y": 717.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1733963338, - "version": 60, - "versionNonce": 1969107798, - "isDeleted": false, - "boundElementIds": null, - "text": "v", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "GNkaf5bm60rpvBI61hY_7", - "type": "rectangle", - "x": 305.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1028773130, - "version": 115, - "versionNonce": 1495881878, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "WsaXEICx6kmfHyzIdGx10", - "type": "text", - "x": 319.1250000000002, - "y": 716.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 723952586, - "version": 93, - "versionNonce": 1874391114, - "isDeleted": false, - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "r7L9sq-4Yrgu_yBHVsPnS", - "type": "rectangle", - "x": 346.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 183736970, - "version": 91, - "versionNonce": 59812630, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "KWYP6qv_nGx66lwLUiuBI", - "type": "text", - "x": 363.1250000000002, - "y": 717.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 997439818, - "version": 60, - "versionNonce": 834066518, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "BRt2-bSED06H22BKVgAsN", - "type": "rectangle", - "x": 387.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 201457674, - "version": 118, - "versionNonce": 757423510, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "F0Dvm919YPjVsL11AKYjH", - "type": "text", - "x": 401.1250000000002, - "y": 716.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 681144010, - "version": 91, - "versionNonce": 1527855830, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "mXV62LF6tpn-k_D1Tmegn", - "type": "rectangle", - "x": 428.6250000000002, - "y": 714.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 97846666, - "version": 135, - "versionNonce": 839872534, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "__nUIT-TeqhwspXyzyeQa", - "type": "text", - "x": 443.1250000000002, - "y": 717.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1290781770, - "version": 109, - "versionNonce": 236256598, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "duJM8ScoT44M1MO5BOfj8", - "type": "rectangle", - "x": 469.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1204071178, - "version": 157, - "versionNonce": 74900118, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "0txb_TgKH-d52qyOIiO9Z", - "type": "text", - "x": 483.1250000000002, - "y": 716.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1288616394, - "version": 130, - "versionNonce": 938090454, - "isDeleted": false, - "boundElementIds": null, - "text": "t", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "3xx_JCaQXvgwepEEFv35-", - "type": "rectangle", - "x": 509.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 724103306, - "version": 119, - "versionNonce": 746829078, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "njKXiOyi7Unc3jC4jh8Vn", - "type": "text", - "x": 523.6250000000002, - "y": 716.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 378425162, - "version": 92, - "versionNonce": 465085014, - "isDeleted": false, - "boundElementIds": null, - "text": "c", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "kTee0vEf2NmC58ex0Gb_p", - "type": "rectangle", - "x": 550.6250000000002, - "y": 712.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 324654602, - "version": 144, - "versionNonce": 1214113686, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "ZrGYrMAKAmQYlUXAnRBsR", - "type": "text", - "x": 564.1250000000002, - "y": 715.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1652982986, - "version": 120, - "versionNonce": 1386775766, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "KZewDCBq0uyplpOPkghum", - "type": "rectangle", - "x": 591.6250000000002, - "y": 713.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1840208778, - "version": 161, - "versionNonce": 204306966, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "5AH3WttF1AIsmjonIgU3d", - "type": "text", - "x": 606.1250000000002, - "y": 716.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 856644170, - "version": 138, - "versionNonce": 1273087830, - "isDeleted": false, - "boundElementIds": null, - "text": "d", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "elCnmUAVJlKIxbMq3bkSJ", - "type": "rectangle", - "x": 632.6250000000002, - "y": 712.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 830570762, - "version": 189, - "versionNonce": 1109027990, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "FXA_8pdwNM9I94dJ-xZgK", - "type": "text", - "x": 646.1250000000002, - "y": 715.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1417727946, - "version": 165, - "versionNonce": 1284270550, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "IVOsfFSVFzUZZHOQ0ZwOc", - "type": "draw", - "x": 173.62500000000026, - "y": 699.875, - "width": 41, - "height": 75, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1613252234, - "version": 129, - "versionNonce": 1246543638, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "omtMrHReH8O_odiKk5gub", - "type": "draw", - "x": 320.6250000000002, - "y": 695.875, - "width": 37, - "height": 80, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1563616586, - "version": 163, - "versionNonce": 1875930198, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "PteQr8wSU7Cy-mqz0VqrG", - "type": "text", - "x": 238.62500000000026, - "y": 669.375, - "width": 40, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 83602442, - "version": 75, - "versionNonce": 451703190, - "isDeleted": false, - "boundElementIds": null, - "text": "窗口", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 23 - }, - { - "id": "PxaqcV7b7MJX1czfR5_mZ", - "type": "rectangle", - "x": 183.62500000000023, - "y": 862.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 243236746, - "version": 80, - "versionNonce": 2011035926, - "isDeleted": false, - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "id": "_WzEpmBHISv7yj965EEYD", - "type": "text", - "x": 200.12500000000023, - "y": 865.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 238747210, - "version": 47, - "versionNonce": 1169318742, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "kZEiySGQX840ua_GheJ39", - "type": "rectangle", - "x": 224.62500000000023, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1872274698, - "version": 96, - "versionNonce": 1870104726, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "qtR4sSsFesijwGj3J81Up", - "type": "text", - "x": 238.12500000000023, - "y": 864.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 202601418, - "version": 69, - "versionNonce": 132515286, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "OUG8XjO4qwwMtXewT6v4d", - "type": "rectangle", - "x": 265.6250000000002, - "y": 862.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1439066762, - "version": 113, - "versionNonce": 538106646, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "69JCI3PLMLWoxoTyx8BZg", - "type": "text", - "x": 279.6250000000002, - "y": 865.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1131186506, - "version": 86, - "versionNonce": 1584597078, - "isDeleted": false, - "boundElementIds": null, - "text": "v", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "N0hkKlHGFeUF6rp-5Yr-W", - "type": "rectangle", - "x": 306.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1012977674, - "version": 141, - "versionNonce": 1390120342, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "Ci0r2SUeU0F1PqUxUQoBD", - "type": "text", - "x": 320.1250000000002, - "y": 864.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 77479626, - "version": 119, - "versionNonce": 2011843402, - "isDeleted": false, - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "2EyKM9FOLjIFowbQjk4Vh", - "type": "rectangle", - "x": 347.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 683660682, - "version": 117, - "versionNonce": 603562006, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "powVOvUZbWZ2P4vnpneql", - "type": "text", - "x": 364.1250000000002, - "y": 865.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1778422858, - "version": 86, - "versionNonce": 590949718, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "X8SEqiW2zGkRh-6j58f6x", - "type": "rectangle", - "x": 388.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 708541194, - "version": 144, - "versionNonce": 1167397526, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "h8OxOyXNYX6jtZp8YcxBt", - "type": "text", - "x": 402.1250000000002, - "y": 864.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1475054026, - "version": 117, - "versionNonce": 365055958, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "GYTj4i2kfeZLBsEfwTBBz", - "type": "rectangle", - "x": 429.6250000000002, - "y": 862.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1512816778, - "version": 161, - "versionNonce": 2144724246, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "DaWA6SJ4p7Fjsv5wVrr5h", - "type": "text", - "x": 444.1250000000002, - "y": 865.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2092375882, - "version": 135, - "versionNonce": 625267286, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "i3er1CWXJNFbQ-2qtpJiX", - "type": "rectangle", - "x": 470.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1541973514, - "version": 183, - "versionNonce": 820254614, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "IC7tIWlRv9Ru0B8LiYzWM", - "type": "text", - "x": 484.1250000000002, - "y": 864.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1354454218, - "version": 156, - "versionNonce": 719893718, - "isDeleted": false, - "boundElementIds": null, - "text": "t", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "EJPaI1t8NQZcG-LePl2cG", - "type": "rectangle", - "x": 510.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1556753290, - "version": 145, - "versionNonce": 1290250774, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "omYqp6IfJz9_PBYgGADI0", - "type": "text", - "x": 524.6250000000002, - "y": 864.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 374352458, - "version": 118, - "versionNonce": 1440085846, - "isDeleted": false, - "boundElementIds": null, - "text": "c", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "_0rPCyKPyLuC-AJ_nHrD_", - "type": "rectangle", - "x": 551.6250000000002, - "y": 860.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 338186506, - "version": 170, - "versionNonce": 1577622678, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "X_duYtwo4rpv-KH5N20cq", - "type": "text", - "x": 565.1250000000002, - "y": 863.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1506648010, - "version": 146, - "versionNonce": 724867542, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "NcP5xCCjSLtZvQ5gvSWr8", - "type": "rectangle", - "x": 592.6250000000002, - "y": 861.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1130043018, - "version": 187, - "versionNonce": 74379030, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "c4DfNNBQYMGvKfxcoXTm9", - "type": "text", - "x": 607.1250000000002, - "y": 864.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1904981322, - "version": 164, - "versionNonce": 103586902, - "isDeleted": false, - "boundElementIds": null, - "text": "d", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "Qp93ae_rbQTIiRnNQpv6n", - "type": "rectangle", - "x": 633.6250000000002, - "y": 860.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 901413898, - "version": 215, - "versionNonce": 1984078230, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "Bv09KHW8A5R3Ge-ND_6Bs", - "type": "text", - "x": 647.1250000000002, - "y": 863.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2111990474, - "version": 191, - "versionNonce": 400948950, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "k8pMsvosX8vmeh6Jv0_bL", - "type": "draw", - "x": 336.6250000000002, - "y": 848.875, - "width": 41, - "height": 75, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1084129674, - "version": 188, - "versionNonce": 2141959190, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "IonV8V0i_NJdX7LW3S-l1", - "type": "draw", - "x": 409.6250000000002, - "y": 846.875, - "width": 37, - "height": 80, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1764343882, - "version": 209, - "versionNonce": 1737015638, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "9Ifc1xJmmqGjli-3KbH39", - "type": "text", - "x": 347.6250000000002, - "y": 822.375, - "width": 40, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1130309386, - "version": 139, - "versionNonce": 47326870, - "isDeleted": false, - "boundElementIds": null, - "text": "窗口", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 23 - }, - { - "id": "5BrQt0l74VbilKH-h2d99", - "type": "rectangle", - "x": 179.62500000000023, - "y": 1026.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 635793558, - "version": 134, - "versionNonce": 948181194, - "isDeleted": false, - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "id": "wUkHZ0ZNjtHT3X_GRlzmJ", - "type": "text", - "x": 196.12500000000023, - "y": 1029.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 139914710, - "version": 101, - "versionNonce": 2134377098, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "X_J8VnDAXG03-RkMpCz4U", - "type": "rectangle", - "x": 220.62500000000023, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 841401110, - "version": 150, - "versionNonce": 2062229834, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "Fi10FSm59UzXA6MVKhl-6", - "type": "text", - "x": 234.12500000000023, - "y": 1028.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1439297622, - "version": 123, - "versionNonce": 944531466, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "eWLHvdIz0qIckz6uJ1z-N", - "type": "rectangle", - "x": 261.6250000000002, - "y": 1026.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 253064598, - "version": 167, - "versionNonce": 794220234, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "w6lfuAbqssM5k5_bsddsF", - "type": "text", - "x": 275.6250000000002, - "y": 1029.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 926831318, - "version": 140, - "versionNonce": 547712394, - "isDeleted": false, - "boundElementIds": null, - "text": "v", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "1ENSsBld9kz-J3TVZ7q09", - "type": "rectangle", - "x": 302.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 953780246, - "version": 195, - "versionNonce": 24325194, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "y8auOFbLmCWyYQYvmNjtI", - "type": "text", - "x": 316.1250000000002, - "y": 1028.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1675367766, - "version": 173, - "versionNonce": 335425750, - "isDeleted": false, - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "GzY58Lm2PMYp2Ad1UrP6M", - "type": "rectangle", - "x": 343.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1100675734, - "version": 171, - "versionNonce": 1972904394, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "NR8xV9LO2XllrLIW68J_Y", - "type": "text", - "x": 360.1250000000002, - "y": 1029.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1758148566, - "version": 140, - "versionNonce": 1183144074, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "P2XAqHsrVCxRA_89dXZks", - "type": "rectangle", - "x": 384.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1367461142, - "version": 198, - "versionNonce": 1511896906, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "CDDOvZ6BNPGtfgqXYcjAN", - "type": "text", - "x": 398.1250000000002, - "y": 1028.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 691255894, - "version": 171, - "versionNonce": 12336650, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "PenDHhw0GOKt6U1DUoO7L", - "type": "rectangle", - "x": 425.6250000000002, - "y": 1026.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 649461654, - "version": 215, - "versionNonce": 1197206730, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "kHQF6lPA5tc1ulktoXzCo", - "type": "text", - "x": 440.1250000000002, - "y": 1029.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1581096150, - "version": 189, - "versionNonce": 1670890378, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "r71Kekji56tvMi7DTjY3H", - "type": "rectangle", - "x": 466.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 358584854, - "version": 237, - "versionNonce": 531284554, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "B25Og6URYQqb2z5HI7gML", - "type": "text", - "x": 480.1250000000002, - "y": 1028.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 386981718, - "version": 210, - "versionNonce": 1181739274, - "isDeleted": false, - "boundElementIds": null, - "text": "t", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "I49X3tmFfTtDLLqQE6rew", - "type": "rectangle", - "x": 506.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 128353430, - "version": 199, - "versionNonce": 258095050, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "cAB7ANluullrSk0qxKP7S", - "type": "text", - "x": 520.6250000000002, - "y": 1028.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 953516502, - "version": 172, - "versionNonce": 178040458, - "isDeleted": false, - "boundElementIds": null, - "text": "c", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "2M54jA3OIEbjR0BYZHjhP", - "type": "rectangle", - "x": 547.6250000000002, - "y": 1024.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2108872470, - "version": 224, - "versionNonce": 215633226, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "5946oIgqdIWH0bWjA8VkL", - "type": "text", - "x": 561.1250000000002, - "y": 1027.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2125694038, - "version": 200, - "versionNonce": 460723210, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "FLW-PRwBBADaDQo-shAuz", - "type": "rectangle", - "x": 588.6250000000002, - "y": 1025.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 229411222, - "version": 241, - "versionNonce": 1483408074, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "KTnxzs0BB7AgoC3ljNwFD", - "type": "text", - "x": 603.1250000000002, - "y": 1028.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2043864790, - "version": 218, - "versionNonce": 1851005322, - "isDeleted": false, - "boundElementIds": null, - "text": "d", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "YmN4NwkIKiaqFVjFJxMP4", - "type": "rectangle", - "x": 629.6250000000002, - "y": 1024.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1673239574, - "version": 269, - "versionNonce": 2087475274, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "Aqd17lHIxsI_pmputge_v", - "type": "text", - "x": 643.1250000000002, - "y": 1027.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 291219798, - "version": 245, - "versionNonce": 42909450, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "hNrCwdD-5X4e5Dw_wZmxE", - "type": "draw", - "x": 409.6250000000002, - "y": 1013.875, - "width": 41, - "height": 75, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1107824278, - "version": 261, - "versionNonce": 1295404490, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "N-SGOmgK7H2LFihV59gdl", - "type": "draw", - "x": 449.6250000000002, - "y": 1009.875, - "width": 37, - "height": 80, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 41274326, - "version": 275, - "versionNonce": 1635648650, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "dGvVRC38vjx6XWDmWIlaH", - "type": "text", - "x": 411.6250000000002, - "y": 987.375, - "width": 40, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 12181782, - "version": 225, - "versionNonce": 1763763018, - "isDeleted": false, - "boundElementIds": null, - "text": "窗口", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 23 - }, - { - "id": "mB34gwGrk5rM53yuxzLyr", - "type": "rectangle", - "x": 182.62500000000023, - "y": 1194.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2053776714, - "version": 156, - "versionNonce": 866785686, - "isDeleted": false, - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "id": "LG-ZdXxURd96qKkv7ro1m", - "type": "text", - "x": 199.12500000000023, - "y": 1197.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2034953226, - "version": 124, - "versionNonce": 1187934922, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "a8S8Yqepbwv7usYDldXnu", - "type": "rectangle", - "x": 223.62500000000023, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1441061578, - "version": 173, - "versionNonce": 698250966, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "Xdsf09lmuT-_Qnx9P9CrH", - "type": "text", - "x": 237.12500000000023, - "y": 1196.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1322447242, - "version": 146, - "versionNonce": 516524426, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "J26-pyIX0HYD1xlQ4hd8r", - "type": "rectangle", - "x": 264.6250000000002, - "y": 1194.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 391131210, - "version": 190, - "versionNonce": 865414166, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "UP_Qb11FM_d-lzIG0n7O7", - "type": "text", - "x": 278.6250000000002, - "y": 1197.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1127716618, - "version": 163, - "versionNonce": 1555286090, - "isDeleted": false, - "boundElementIds": null, - "text": "v", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "9zYhWDCiNhUz_C3zoCqsE", - "type": "rectangle", - "x": 305.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 855909834, - "version": 218, - "versionNonce": 1333999958, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "z7d16FA6ZJqa3KkRp0f88", - "type": "text", - "x": 319.1250000000002, - "y": 1196.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 2144394378, - "version": 195, - "versionNonce": 1214787338, - "isDeleted": false, - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "_m4FN3vn-YdVY3CPtQMeq", - "type": "rectangle", - "x": 346.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1733868362, - "version": 194, - "versionNonce": 1958583958, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "1hBVeHWJhGznyM8Duucw8", - "type": "text", - "x": 363.1250000000002, - "y": 1197.875, - "width": 5, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 938918410, - "version": 163, - "versionNonce": 1986117066, - "isDeleted": false, - "boundElementIds": null, - "text": "l", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "_ouZYDv1oIs1ezbkXIu0c", - "type": "rectangle", - "x": 387.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1017508042, - "version": 221, - "versionNonce": 1744395222, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "pjbMZuUAOsReXBQXJ51CQ", - "type": "text", - "x": 401.1250000000002, - "y": 1196.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 687949706, - "version": 194, - "versionNonce": 867923082, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "C1Wbh43UuIwNVotcMD2Qy", - "type": "rectangle", - "x": 428.6250000000002, - "y": 1194.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 88327754, - "version": 238, - "versionNonce": 256602390, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "eStnVMVHRNKhYnPZW7Evl", - "type": "text", - "x": 443.1250000000002, - "y": 1197.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 440954122, - "version": 212, - "versionNonce": 1915769674, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "-pFAL7h_UuUk5aVlE4-uK", - "type": "rectangle", - "x": 469.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1569340362, - "version": 260, - "versionNonce": 1177083478, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "9_64B12ZnI8EO3iYXf8Bx", - "type": "text", - "x": 483.1250000000002, - "y": 1196.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1562653322, - "version": 233, - "versionNonce": 874207754, - "isDeleted": false, - "boundElementIds": null, - "text": "t", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "3-2OIeE_yvNx5PgSs9V_K", - "type": "rectangle", - "x": 509.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 735138122, - "version": 222, - "versionNonce": 828810134, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "sxkN7eXMrukZWq-dpujuG", - "type": "text", - "x": 523.6250000000002, - "y": 1196.875, - "width": 10, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1290573834, - "version": 195, - "versionNonce": 2021099722, - "isDeleted": false, - "boundElementIds": null, - "text": "c", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "29efoE3a0_voNNFnzFTRY", - "type": "rectangle", - "x": 550.6250000000002, - "y": 1192.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 544278218, - "version": 247, - "versionNonce": 322552022, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "MaRFg_HR-zFsR5S-Jb0-7", - "type": "text", - "x": 564.1250000000002, - "y": 1195.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1324981642, - "version": 223, - "versionNonce": 652205962, - "isDeleted": false, - "boundElementIds": null, - "text": "o", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "cQmURMAhzrOwDVXXJZiVJ", - "type": "rectangle", - "x": 591.6250000000002, - "y": 1193.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 901864522, - "version": 264, - "versionNonce": 523712022, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "EAwofWRpxWFTJ9Ezg478k", - "type": "text", - "x": 606.1250000000002, - "y": 1196.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1386431242, - "version": 241, - "versionNonce": 2072993354, - "isDeleted": false, - "boundElementIds": null, - "text": "d", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "TGxyeiD3s5STS25IlUVNZ", - "type": "rectangle", - "x": 632.6250000000002, - "y": 1192.875, - "width": 38, - "height": 38, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 807031242, - "version": 292, - "versionNonce": 1314128726, - "isDeleted": false, - "boundElementIds": null - }, - { - "id": "2nWFMobCGXXZMiH-nCAYK", - "type": "text", - "x": 646.1250000000002, - "y": 1195.875, - "width": 11, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1363249290, - "version": 268, - "versionNonce": 1935738122, - "isDeleted": false, - "boundElementIds": null, - "text": "e", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 23 - }, - { - "id": "C7QzwoUaGbMLwOc1v2L3J", - "type": "draw", - "x": 463.6250000000002, - "y": 1181.875, - "width": 41, - "height": 75, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1080606806, - "version": 310, - "versionNonce": 1549907530, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "NQG7gnYv4L9HYUiXON78R", - "type": "draw", - "x": 650.6250000000003, - "y": 1176.875, - "width": 37, - "height": 80, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 1984397718, - "version": 327, - "versionNonce": 1355415498, - "isDeleted": false, - "boundElementIds": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null - }, - { - "id": "Q6kM0jYeyu6m05lDS30pa", - "type": "text", - "x": 533.6250000000002, - "y": 1151.375, - "width": 40, - "height": 32, - "angle": 0, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", - "seed": 1266656650, - "version": 268, - "versionNonce": 1202264022, - "isDeleted": false, - "boundElementIds": null, - "text": "窗口", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 23 - } - ], - "appState": { - "viewBackgroundColor": "#ffffff", - "gridSize": null - } -} \ No newline at end of file diff --git a/assets/821_1.excalidraw b/assets/821_1.excalidraw deleted file mode 100644 index 22afc6f..0000000 --- a/assets/821_1.excalidraw +++ /dev/null @@ -1,3335 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 54, - "versionNonce": 1075938326, - "isDeleted": false, - "id": "KKdqwy_VPgyTkz34zBEGo", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 182.62500000000026, - "y": 714.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1770538122, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "type": "text", - "version": 21, - "versionNonce": 667618902, - "isDeleted": false, - "id": "EwqYu_GPDNVAlhmYrLvzT", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 199.12500000000026, - "y": 717.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 1977819978, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 70, - "versionNonce": 2135085974, - "isDeleted": false, - "id": "IaDXhKlbNNtaQ1rKX5C5T", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 223.62500000000026, - "y": 713.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1492396554, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 43, - "versionNonce": 907014358, - "isDeleted": false, - "id": "qKO5U44OQlQ54t6CUQlzW", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 237.12500000000026, - "y": 716.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 699816138, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 87, - "versionNonce": 1741121046, - "isDeleted": false, - "id": "DjuhuUWv-QjRXTfO_VS4a", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 264.6250000000002, - "y": 714.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1740943242, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 60, - "versionNonce": 1969107798, - "isDeleted": false, - "id": "NmqJVTLIoW956-00f71Ld", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 278.6250000000002, - "y": 717.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 1733963338, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "v", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 115, - "versionNonce": 1495881878, - "isDeleted": false, - "id": "GNkaf5bm60rpvBI61hY_7", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 305.6250000000002, - "y": 713.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1028773130, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 93, - "versionNonce": 1874391114, - "isDeleted": false, - "id": "WsaXEICx6kmfHyzIdGx10", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 319.1250000000002, - "y": 716.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 723952586, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 91, - "versionNonce": 59812630, - "isDeleted": false, - "id": "r7L9sq-4Yrgu_yBHVsPnS", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 346.6250000000002, - "y": 713.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 183736970, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 60, - "versionNonce": 834066518, - "isDeleted": false, - "id": "KWYP6qv_nGx66lwLUiuBI", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 363.1250000000002, - "y": 717.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 997439818, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 118, - "versionNonce": 757423510, - "isDeleted": false, - "id": "BRt2-bSED06H22BKVgAsN", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 387.6250000000002, - "y": 713.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 201457674, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 91, - "versionNonce": 1527855830, - "isDeleted": false, - "id": "F0Dvm919YPjVsL11AKYjH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 401.1250000000002, - "y": 716.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 681144010, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 135, - "versionNonce": 839872534, - "isDeleted": false, - "id": "mXV62LF6tpn-k_D1Tmegn", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 428.6250000000002, - "y": 714.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 97846666, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 109, - "versionNonce": 236256598, - "isDeleted": false, - "id": "__nUIT-TeqhwspXyzyeQa", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 443.1250000000002, - "y": 717.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1290781770, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 157, - "versionNonce": 74900118, - "isDeleted": false, - "id": "duJM8ScoT44M1MO5BOfj8", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 469.6250000000002, - "y": 713.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1204071178, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 130, - "versionNonce": 938090454, - "isDeleted": false, - "id": "0txb_TgKH-d52qyOIiO9Z", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 483.1250000000002, - "y": 716.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1288616394, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "t", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 119, - "versionNonce": 746829078, - "isDeleted": false, - "id": "3xx_JCaQXvgwepEEFv35-", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 509.6250000000002, - "y": 713.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 724103306, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 92, - "versionNonce": 465085014, - "isDeleted": false, - "id": "njKXiOyi7Unc3jC4jh8Vn", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 523.6250000000002, - "y": 716.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 378425162, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "c", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 144, - "versionNonce": 1214113686, - "isDeleted": false, - "id": "kTee0vEf2NmC58ex0Gb_p", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 550.6250000000002, - "y": 712.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 324654602, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 120, - "versionNonce": 1386775766, - "isDeleted": false, - "id": "ZrGYrMAKAmQYlUXAnRBsR", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 564.1250000000002, - "y": 715.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1652982986, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 161, - "versionNonce": 204306966, - "isDeleted": false, - "id": "KZewDCBq0uyplpOPkghum", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 591.6250000000002, - "y": 713.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1840208778, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 138, - "versionNonce": 1273087830, - "isDeleted": false, - "id": "5AH3WttF1AIsmjonIgU3d", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 606.1250000000002, - "y": 716.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 856644170, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "d", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 189, - "versionNonce": 1109027990, - "isDeleted": false, - "id": "elCnmUAVJlKIxbMq3bkSJ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6250000000002, - "y": 712.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 830570762, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 165, - "versionNonce": 1284270550, - "isDeleted": false, - "id": "FXA_8pdwNM9I94dJ-xZgK", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 646.1250000000002, - "y": 715.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1417727946, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "draw", - "version": 129, - "versionNonce": 1246543638, - "isDeleted": false, - "id": "IVOsfFSVFzUZZHOQ0ZwOc", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 173.62500000000026, - "y": 699.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 41, - "height": 75, - "seed": 1613252234, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "draw", - "version": 163, - "versionNonce": 1875930198, - "isDeleted": false, - "id": "omtMrHReH8O_odiKk5gub", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 320.6250000000002, - "y": 695.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 37, - "height": 80, - "seed": 1563616586, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "text", - "version": 75, - "versionNonce": 451703190, - "isDeleted": false, - "id": "PteQr8wSU7Cy-mqz0VqrG", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 238.62500000000026, - "y": 669.375, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 40, - "height": 32, - "seed": 83602442, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "窗口", - "baseline": 23, - "textAlign": "left", - "verticalAlign": "top" - }, - { - "type": "rectangle", - "version": 80, - "versionNonce": 2011035926, - "isDeleted": false, - "id": "PxaqcV7b7MJX1czfR5_mZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 183.62500000000023, - "y": 862.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 243236746, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "type": "text", - "version": 47, - "versionNonce": 1169318742, - "isDeleted": false, - "id": "_WzEpmBHISv7yj965EEYD", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 200.12500000000023, - "y": 865.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 238747210, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 96, - "versionNonce": 1870104726, - "isDeleted": false, - "id": "kZEiySGQX840ua_GheJ39", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 224.62500000000023, - "y": 861.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1872274698, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 69, - "versionNonce": 132515286, - "isDeleted": false, - "id": "qtR4sSsFesijwGj3J81Up", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 238.12500000000023, - "y": 864.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 202601418, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 113, - "versionNonce": 538106646, - "isDeleted": false, - "id": "OUG8XjO4qwwMtXewT6v4d", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 265.6250000000002, - "y": 862.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1439066762, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 86, - "versionNonce": 1584597078, - "isDeleted": false, - "id": "69JCI3PLMLWoxoTyx8BZg", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 279.6250000000002, - "y": 865.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 1131186506, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "v", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 141, - "versionNonce": 1390120342, - "isDeleted": false, - "id": "N0hkKlHGFeUF6rp-5Yr-W", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 306.6250000000002, - "y": 861.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1012977674, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 119, - "versionNonce": 2011843402, - "isDeleted": false, - "id": "Ci0r2SUeU0F1PqUxUQoBD", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 320.1250000000002, - "y": 864.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 77479626, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 117, - "versionNonce": 603562006, - "isDeleted": false, - "id": "2EyKM9FOLjIFowbQjk4Vh", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.6250000000002, - "y": 861.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 683660682, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 86, - "versionNonce": 590949718, - "isDeleted": false, - "id": "powVOvUZbWZ2P4vnpneql", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 364.1250000000002, - "y": 865.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 1778422858, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 144, - "versionNonce": 1167397526, - "isDeleted": false, - "id": "X8SEqiW2zGkRh-6j58f6x", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 388.6250000000002, - "y": 861.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 708541194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 117, - "versionNonce": 365055958, - "isDeleted": false, - "id": "h8OxOyXNYX6jtZp8YcxBt", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 402.1250000000002, - "y": 864.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1475054026, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 161, - "versionNonce": 2144724246, - "isDeleted": false, - "id": "GYTj4i2kfeZLBsEfwTBBz", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 429.6250000000002, - "y": 862.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1512816778, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 135, - "versionNonce": 625267286, - "isDeleted": false, - "id": "DaWA6SJ4p7Fjsv5wVrr5h", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 444.1250000000002, - "y": 865.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 2092375882, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 183, - "versionNonce": 820254614, - "isDeleted": false, - "id": "i3er1CWXJNFbQ-2qtpJiX", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 470.6250000000002, - "y": 861.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1541973514, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 156, - "versionNonce": 719893718, - "isDeleted": false, - "id": "IC7tIWlRv9Ru0B8LiYzWM", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 484.1250000000002, - "y": 864.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1354454218, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "t", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 145, - "versionNonce": 1290250774, - "isDeleted": false, - "id": "EJPaI1t8NQZcG-LePl2cG", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 510.6250000000002, - "y": 861.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1556753290, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 118, - "versionNonce": 1440085846, - "isDeleted": false, - "id": "omYqp6IfJz9_PBYgGADI0", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 524.6250000000002, - "y": 864.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 374352458, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "c", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 170, - "versionNonce": 1577622678, - "isDeleted": false, - "id": "_0rPCyKPyLuC-AJ_nHrD_", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 551.6250000000002, - "y": 860.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 338186506, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 146, - "versionNonce": 724867542, - "isDeleted": false, - "id": "X_duYtwo4rpv-KH5N20cq", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 565.1250000000002, - "y": 863.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1506648010, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 187, - "versionNonce": 74379030, - "isDeleted": false, - "id": "NcP5xCCjSLtZvQ5gvSWr8", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 592.6250000000002, - "y": 861.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1130043018, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 164, - "versionNonce": 103586902, - "isDeleted": false, - "id": "c4DfNNBQYMGvKfxcoXTm9", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 607.1250000000002, - "y": 864.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1904981322, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "d", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 215, - "versionNonce": 1984078230, - "isDeleted": false, - "id": "Qp93ae_rbQTIiRnNQpv6n", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 633.6250000000002, - "y": 860.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 901413898, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 191, - "versionNonce": 400948950, - "isDeleted": false, - "id": "Bv09KHW8A5R3Ge-ND_6Bs", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 647.1250000000002, - "y": 863.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 2111990474, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "draw", - "version": 188, - "versionNonce": 2141959190, - "isDeleted": false, - "id": "k8pMsvosX8vmeh6Jv0_bL", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 336.6250000000002, - "y": 848.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 41, - "height": 75, - "seed": 1084129674, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "draw", - "version": 209, - "versionNonce": 1737015638, - "isDeleted": false, - "id": "IonV8V0i_NJdX7LW3S-l1", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.6250000000002, - "y": 846.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 37, - "height": 80, - "seed": 1764343882, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "text", - "version": 139, - "versionNonce": 47326870, - "isDeleted": false, - "id": "9Ifc1xJmmqGjli-3KbH39", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.6250000000002, - "y": 822.375, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 40, - "height": 32, - "seed": 1130309386, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "窗口", - "baseline": 23, - "textAlign": "left", - "verticalAlign": "top" - }, - { - "type": "rectangle", - "version": 134, - "versionNonce": 948181194, - "isDeleted": false, - "id": "5BrQt0l74VbilKH-h2d99", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 179.62500000000023, - "y": 1026.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 635793558, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "type": "text", - "version": 101, - "versionNonce": 2134377098, - "isDeleted": false, - "id": "wUkHZ0ZNjtHT3X_GRlzmJ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 196.12500000000023, - "y": 1029.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 139914710, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 150, - "versionNonce": 2062229834, - "isDeleted": false, - "id": "X_J8VnDAXG03-RkMpCz4U", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 220.62500000000023, - "y": 1025.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 841401110, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 123, - "versionNonce": 944531466, - "isDeleted": false, - "id": "Fi10FSm59UzXA6MVKhl-6", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 234.12500000000023, - "y": 1028.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1439297622, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 167, - "versionNonce": 794220234, - "isDeleted": false, - "id": "eWLHvdIz0qIckz6uJ1z-N", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 261.6250000000002, - "y": 1026.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 253064598, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 140, - "versionNonce": 547712394, - "isDeleted": false, - "id": "w6lfuAbqssM5k5_bsddsF", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 275.6250000000002, - "y": 1029.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 926831318, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "v", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 195, - "versionNonce": 24325194, - "isDeleted": false, - "id": "1ENSsBld9kz-J3TVZ7q09", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 302.6250000000002, - "y": 1025.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 953780246, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 173, - "versionNonce": 335425750, - "isDeleted": false, - "id": "y8auOFbLmCWyYQYvmNjtI", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 316.1250000000002, - "y": 1028.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1675367766, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 171, - "versionNonce": 1972904394, - "isDeleted": false, - "id": "GzY58Lm2PMYp2Ad1UrP6M", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 343.6250000000002, - "y": 1025.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1100675734, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 140, - "versionNonce": 1183144074, - "isDeleted": false, - "id": "NR8xV9LO2XllrLIW68J_Y", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.1250000000002, - "y": 1029.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 1758148566, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 198, - "versionNonce": 1511896906, - "isDeleted": false, - "id": "P2XAqHsrVCxRA_89dXZks", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 384.6250000000002, - "y": 1025.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1367461142, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 171, - "versionNonce": 12336650, - "isDeleted": false, - "id": "CDDOvZ6BNPGtfgqXYcjAN", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 398.1250000000002, - "y": 1028.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 691255894, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 215, - "versionNonce": 1197206730, - "isDeleted": false, - "id": "PenDHhw0GOKt6U1DUoO7L", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 425.6250000000002, - "y": 1026.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 649461654, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 189, - "versionNonce": 1670890378, - "isDeleted": false, - "id": "kHQF6lPA5tc1ulktoXzCo", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.1250000000002, - "y": 1029.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1581096150, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 237, - "versionNonce": 531284554, - "isDeleted": false, - "id": "r71Kekji56tvMi7DTjY3H", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 466.6250000000002, - "y": 1025.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 358584854, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 210, - "versionNonce": 1181739274, - "isDeleted": false, - "id": "B25Og6URYQqb2z5HI7gML", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 480.1250000000002, - "y": 1028.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 386981718, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "t", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 199, - "versionNonce": 258095050, - "isDeleted": false, - "id": "I49X3tmFfTtDLLqQE6rew", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 506.6250000000002, - "y": 1025.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 128353430, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 172, - "versionNonce": 178040458, - "isDeleted": false, - "id": "cAB7ANluullrSk0qxKP7S", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 520.6250000000002, - "y": 1028.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 953516502, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "c", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 224, - "versionNonce": 215633226, - "isDeleted": false, - "id": "2M54jA3OIEbjR0BYZHjhP", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 547.6250000000002, - "y": 1024.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 2108872470, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 200, - "versionNonce": 460723210, - "isDeleted": false, - "id": "5946oIgqdIWH0bWjA8VkL", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 561.1250000000002, - "y": 1027.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 2125694038, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 241, - "versionNonce": 1483408074, - "isDeleted": false, - "id": "FLW-PRwBBADaDQo-shAuz", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 588.6250000000002, - "y": 1025.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 229411222, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 218, - "versionNonce": 1851005322, - "isDeleted": false, - "id": "KTnxzs0BB7AgoC3ljNwFD", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 603.1250000000002, - "y": 1028.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 2043864790, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "d", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 269, - "versionNonce": 2087475274, - "isDeleted": false, - "id": "YmN4NwkIKiaqFVjFJxMP4", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 629.6250000000002, - "y": 1024.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1673239574, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 245, - "versionNonce": 42909450, - "isDeleted": false, - "id": "Aqd17lHIxsI_pmputge_v", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 643.1250000000002, - "y": 1027.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 291219798, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "draw", - "version": 261, - "versionNonce": 1295404490, - "isDeleted": false, - "id": "hNrCwdD-5X4e5Dw_wZmxE", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.6250000000002, - "y": 1013.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 41, - "height": 75, - "seed": 1107824278, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "draw", - "version": 275, - "versionNonce": 1635648650, - "isDeleted": false, - "id": "N-SGOmgK7H2LFihV59gdl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 449.6250000000002, - "y": 1009.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 37, - "height": 80, - "seed": 41274326, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "text", - "version": 225, - "versionNonce": 1763763018, - "isDeleted": false, - "id": "dGvVRC38vjx6XWDmWIlaH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 411.6250000000002, - "y": 987.375, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 40, - "height": 32, - "seed": 12181782, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "窗口", - "baseline": 23, - "textAlign": "left", - "verticalAlign": "top" - }, - { - "type": "rectangle", - "version": 156, - "versionNonce": 866785686, - "isDeleted": false, - "id": "mB34gwGrk5rM53yuxzLyr", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 182.62500000000023, - "y": 1194.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 2053776714, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "pQskk0G98FkwYFPuCC7E2", - "560tUCAMIpUxHQwSV4S_Y" - ] - }, - { - "type": "text", - "version": 124, - "versionNonce": 1187934922, - "isDeleted": false, - "id": "LG-ZdXxURd96qKkv7ro1m", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 199.12500000000023, - "y": 1197.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 2034953226, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 173, - "versionNonce": 698250966, - "isDeleted": false, - "id": "a8S8Yqepbwv7usYDldXnu", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 223.62500000000023, - "y": 1193.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1441061578, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 146, - "versionNonce": 516524426, - "isDeleted": false, - "id": "Xdsf09lmuT-_Qnx9P9CrH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 237.12500000000023, - "y": 1196.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1322447242, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 190, - "versionNonce": 865414166, - "isDeleted": false, - "id": "J26-pyIX0HYD1xlQ4hd8r", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 264.6250000000002, - "y": 1194.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 391131210, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 163, - "versionNonce": 1555286090, - "isDeleted": false, - "id": "UP_Qb11FM_d-lzIG0n7O7", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 278.6250000000002, - "y": 1197.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 1127716618, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "v", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 218, - "versionNonce": 1333999958, - "isDeleted": false, - "id": "9zYhWDCiNhUz_C3zoCqsE", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 305.6250000000002, - "y": 1193.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 855909834, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 195, - "versionNonce": 1214787338, - "isDeleted": false, - "id": "z7d16FA6ZJqa3KkRp0f88", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 319.1250000000002, - "y": 1196.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 2144394378, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [ - "27jgu510GG5uU_6lzSgwX", - "560tUCAMIpUxHQwSV4S_Y" - ], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 194, - "versionNonce": 1958583958, - "isDeleted": false, - "id": "_m4FN3vn-YdVY3CPtQMeq", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 346.6250000000002, - "y": 1193.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1733868362, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 163, - "versionNonce": 1986117066, - "isDeleted": false, - "id": "1hBVeHWJhGznyM8Duucw8", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 363.1250000000002, - "y": 1197.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 5, - "height": 32, - "seed": 938918410, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "l", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 221, - "versionNonce": 1744395222, - "isDeleted": false, - "id": "_ouZYDv1oIs1ezbkXIu0c", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 387.6250000000002, - "y": 1193.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1017508042, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 194, - "versionNonce": 867923082, - "isDeleted": false, - "id": "pjbMZuUAOsReXBQXJ51CQ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 401.1250000000002, - "y": 1196.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 687949706, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 238, - "versionNonce": 256602390, - "isDeleted": false, - "id": "C1Wbh43UuIwNVotcMD2Qy", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 428.6250000000002, - "y": 1194.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 88327754, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 212, - "versionNonce": 1915769674, - "isDeleted": false, - "id": "eStnVMVHRNKhYnPZW7Evl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 443.1250000000002, - "y": 1197.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 440954122, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 260, - "versionNonce": 1177083478, - "isDeleted": false, - "id": "-pFAL7h_UuUk5aVlE4-uK", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 469.6250000000002, - "y": 1193.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 1569340362, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 233, - "versionNonce": 874207754, - "isDeleted": false, - "id": "9_64B12ZnI8EO3iYXf8Bx", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 483.1250000000002, - "y": 1196.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1562653322, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "t", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 222, - "versionNonce": 828810134, - "isDeleted": false, - "id": "3-2OIeE_yvNx5PgSs9V_K", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 509.6250000000002, - "y": 1193.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 735138122, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 195, - "versionNonce": 2021099722, - "isDeleted": false, - "id": "sxkN7eXMrukZWq-dpujuG", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 523.6250000000002, - "y": 1196.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 10, - "height": 32, - "seed": 1290573834, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "c", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 247, - "versionNonce": 322552022, - "isDeleted": false, - "id": "29efoE3a0_voNNFnzFTRY", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 550.6250000000002, - "y": 1192.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 544278218, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 223, - "versionNonce": 652205962, - "isDeleted": false, - "id": "MaRFg_HR-zFsR5S-Jb0-7", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 564.1250000000002, - "y": 1195.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1324981642, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "o", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 264, - "versionNonce": 523712022, - "isDeleted": false, - "id": "cQmURMAhzrOwDVXXJZiVJ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 591.6250000000002, - "y": 1193.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 901864522, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 241, - "versionNonce": 2072993354, - "isDeleted": false, - "id": "EAwofWRpxWFTJ9Ezg478k", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 606.1250000000002, - "y": 1196.875, - "strokeColor": "#495057", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1386431242, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "d", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "rectangle", - "version": 292, - "versionNonce": 1314128726, - "isDeleted": false, - "id": "TGxyeiD3s5STS25IlUVNZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6250000000002, - "y": 1192.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 38, - "height": 38, - "seed": 807031242, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [] - }, - { - "type": "text", - "version": 268, - "versionNonce": 1935738122, - "isDeleted": false, - "id": "2nWFMobCGXXZMiH-nCAYK", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 646.1250000000002, - "y": 1195.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 11, - "height": 32, - "seed": 1363249290, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "e", - "baseline": 23, - "textAlign": "center", - "verticalAlign": "middle" - }, - { - "type": "draw", - "version": 310, - "versionNonce": 1549907530, - "isDeleted": false, - "id": "C7QzwoUaGbMLwOc1v2L3J", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 463.6250000000002, - "y": 1181.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 41, - "height": 75, - "seed": 1080606806, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - -8, - -2 - ], - [ - -12, - 1 - ], - [ - -14, - 19 - ], - [ - -10, - 30 - ], - [ - -13, - 33 - ], - [ - -30, - 35 - ], - [ - -8, - 43 - ], - [ - -8, - 73 - ], - [ - 8, - 73 - ], - [ - 11, - 69 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "draw", - "version": 327, - "versionNonce": 1355415498, - "isDeleted": false, - "id": "NQG7gnYv4L9HYUiXON78R", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 650.6250000000003, - "y": 1176.875, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 37, - "height": 80, - "seed": 1984397718, - "groupIds": [], - "strokeSharpness": "round", - "boundElementIds": [], - "startBinding": null, - "endBinding": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - -1 - ], - [ - 6, - -1 - ], - [ - 13, - 5 - ], - [ - 13, - 21 - ], - [ - 9, - 27 - ], - [ - 8, - 32 - ], - [ - 14, - 33 - ], - [ - 15, - 35 - ], - [ - 18, - 35 - ], - [ - 17, - 37 - ], - [ - 7, - 43 - ], - [ - 10, - 72 - ], - [ - 9, - 72 - ], - [ - 7, - 76 - ], - [ - -16, - 79 - ], - [ - -16, - 78 - ], - [ - -19, - 76 - ] - ], - "lastCommittedPoint": null - }, - { - "type": "text", - "version": 268, - "versionNonce": 1202264022, - "isDeleted": false, - "id": "Q6kM0jYeyu6m05lDS30pa", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 533.6250000000002, - "y": 1151.375, - "strokeColor": "#d9480f", - "backgroundColor": "transparent", - "width": 40, - "height": 32, - "seed": 1266656650, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElementIds": [], - "fontSize": 20, - "fontFamily": 1, - "text": "窗口", - "baseline": 23, - "textAlign": "left", - "verticalAlign": "top" - } - ], - "appState": { - "viewBackgroundColor": "#ffffff", - "gridSize": null - } -} \ No newline at end of file diff --git a/basic/array-stack-queue/02.shortest-distance-to-a-character.md b/basic/array-stack-queue/02.shortest-distance-to-a-character.md index 4360363..700ce43 100644 --- a/basic/array-stack-queue/02.shortest-distance-to-a-character.md +++ b/basic/array-stack-queue/02.shortest-distance-to-a-character.md @@ -1,25 +1,25 @@ # 821.字符的最短距离 -https://leetcode-cn.com/problems/shortest-distance-to-a-character +https://leetcode-cn.com/problems/shortest-distance-to-a-character/ - [821.字符的最短距离](#821字符的最短距离) - [题目描述](#题目描述) - [解法 1:中心扩展法](#解法-1中心扩展法) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码 (JS/C++)](#代码-jsc) - [解法 2:空间换时间](#解法-2空间换时间) - [思路](#思路-1) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码 (JS/C++)](#代码-jsc-1) - [解法 3:贪心](#解法-3贪心) - [思路](#思路-2) - [复杂度分析](#复杂度分析-2) - - [代码](#代码-2) + - [代码 (JS/C++)](#代码-jsc-2) - [解法 4:窗口](#解法-4窗口) - [思路](#思路-3) - [复杂度分析](#复杂度分析-3) - - [代码](#代码-3) + - [代码 (JS/C++)](#代码-jsc-3) ## 题目描述 @@ -47,18 +47,18 @@ S 和 C 中的所有字母均为小写字母。 这是最符合直觉的思路,对每个字符分别进行如下处理: -- 从当前下标出发,分别向左、右两个方向去寻找目标字符 `C`。 -- 只在一个方向找到的话,直接计算字符距离。 -- 两个方向都找到的话,取两个距离的最小值。 +- 从当前下标出发,分别向左、右两个方向去寻找目标字符 `C`。 +- 只在一个方向找到的话,直接计算字符距离。 +- 两个方向都找到的话,取两个距离的最小值。 -![](https://pic.leetcode-cn.com/1606962060-CnDiHj-file_1606962060610) +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/821_0.png) ### 复杂度分析 -- 时间复杂度:$O(N^2)$,N 为 S 的长度,两层循环。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N^2)$,N 为 S 的长度,两层循环。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码 (JS/C++) JavaScript Code @@ -69,37 +69,74 @@ JavaScript Code * @return {number[]} */ var shortestToChar = function (S, C) { - // 结果数组 res - var res = Array(S.length).fill(0); - - for (let i = 0; i < S.length; i++) { - // 如果当前是目标字符,就什么都不用做 - if (S[i] === C) continue; - - // 定义两个指针 l, r 分别向左、右两个方向寻找目标字符 C,取最短距离 - let l = i, - r = i, - shortest = Infinity; - - while (l >= 0) { - if (S[l] === C) { - shortest = Math.min(shortest, i - l); - break; - } - l--; - } + // 结果数组 res + var res = Array(S.length).fill(0); + + for (let i = 0; i < S.length; i++) { + // 如果当前是目标字符,就什么都不用做 + if (S[i] === C) continue; + + // 定义两个指针 l, r 分别向左、右两个方向寻找目标字符 C,取最短距离 + let l = i, + r = i, + shortest = Infinity; + + while (l >= 0) { + if (S[l] === C) { + shortest = Math.min(shortest, i - l); + break; + } + l--; + } - while (r < S.length) { - if (S[r] === C) { - shortest = Math.min(shortest, r - i); - break; + while (r < S.length) { + if (S[r] === C) { + shortest = Math.min(shortest, r - i); + break; + } + r++; + } + + res[i] = shortest; + } + return res; +}; +``` + +C++ Code + +```cpp +class Solution { +public: + vector shortestToChar(string S, char C) { + vector res(S.length()); + + for (int i = 0; i < S.length(); i++) { + if (S[i] == C) continue; + + int left = i; + int right = i; + int dist = 0; + + while (left >= 0 || right <= S.length() - 1) { + if (S[left] == C) { + dist = i - left; + break; + } + if (S[right] == C) { + dist = right - i; + break; + } + + if (left > 0) left--; + if (right < S.length() - 1) right++; } - r++; + + res[i] = dist; } - res[i] = shortest; + return res; } - return res; }; ``` @@ -115,10 +152,10 @@ var shortestToChar = function (S, C) { ### 复杂度分析 -- 时间复杂度:$O(N*K)$,N 是 S 的长度,K 是字符 `C` 在字符串中出现的次数,$K <= N$。 -- 空间复杂度:$O(K)$,K 为字符 `C` 出现的次数,这是记录字符 `C` 出现下标的辅助数组消耗的空间。 +- 时间复杂度:$O(N*K)$,N 是 S 的长度,K 是字符 `C` 在字符串中出现的次数,$K <= N$。 +- 空间复杂度:$O(K)$,K 为字符 `C` 出现的次数,这是记录字符 `C` 出现下标的辅助数组消耗的空间。 -### 代码 +### 代码 (JS/C++) JavaScript Code @@ -129,34 +166,67 @@ JavaScript Code * @return {number[]} */ var shortestToChar = function (S, C) { - // 记录 C 字符在 S 字符串中出现的所有下标 - var cIndices = []; - for (let i = 0; i < S.length; i++) { - if (S[i] === C) cIndices.push(i); + // 记录 C 字符在 S 字符串中出现的所有下标 + var cIndices = []; + for (let i = 0; i < S.length; i++) { + if (S[i] === C) cIndices.push(i); + } + + // 结果数组 res + var res = Array(S.length).fill(Infinity); + + for (let i = 0; i < S.length; i++) { + // 目标字符,距离是 0 + if (S[i] === C) { + res[i] = 0; + continue; } - // 结果数组 res - var res = Array(S.length).fill(Infinity); + // 非目标字符,到下标数组中找最近的下标 + for (const cIndex of cIndices) { + const dist = Math.abs(cIndex - i); - for (let i = 0; i < S.length; i++) { - // 目标字符,距离是 0 - if (S[i] === C) { - res[i] = 0; - continue; - } + // 小小剪枝一下 + // 注:因为 cIndices 中的下标是递增的,后面的 dist 也会越来越大,可以排除 + if (dist >= res[i]) break; + + res[i] = dist; + } + } + return res; +}; +``` - // 非目标字符,到下标数组中找最近的下标 - for (const cIndex of cIndices) { - const dist = Math.abs(cIndex - i); +C++ Code - // 小小剪枝一下 - // 注:因为 cIndices 中的下标是递增的,后面的 dist 也会越来越大,可以排除 - if (dist >= res[i]) break; +```cpp +class Solution { +public: + vector shortestToChar(string S, char C) { + int n = S.length(); + vector c_indices; + // Initialize a vector of size n with default value n. + vector res(n, n); - res[i] = dist; + for (int i = 0; i < n; i++) { + if (S[i] == C) c_indices.push_back(i); } + + for (int i = 0; i < n; i++) { + if (S[i] == C) { + res[i] = 0; + continue; + } + + for (int j = 0; j < c_indices.size(); j++) { + int dist = abs(c_indices[j] - i); + if (dist > res[i]) break; + res[i] = dist; + } + } + + return res; } - return res; }; ``` @@ -185,10 +255,10 @@ var shortestToChar = function (S, C) { ### 复杂度分析 -- 时间复杂度:$O(N)$,N 是 S 的长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N)$,N 是 S 的长度。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码 (JS/C++) JavaScript Code @@ -199,29 +269,28 @@ JavaScript Code * @return {number[]} */ var shortestToChar = function (S, C) { - var res = Array(S.length); - - // 第一次遍历:从左往右 - // 找到出现在左侧的 C 字符的最后下标 - for (let i = 0; i < S.length; i++) { - if (S[i] === C) res[i] = i; - // 如果左侧没有出现 C 字符的话,用 Infinity 进行标记 - else res[i] = res[i - 1] === void 0 ? Infinity : res[i - 1]; - } - - // 第二次遍历:从右往左 - // 找出现在右侧的 C 字符的最后下标 - // 如果左侧没有出现过 C 字符,或者右侧出现的 C 字符距离更近,就更新 res[i] - for (let i = S.length - 1; i >= 0; i--) { - if (res[i] === Infinity || res[i + 1] - i < i - res[i]) - res[i] = res[i + 1]; - } - - // 计算距离 - for (let i = 0; i < res.length; i++) { - res[i] = Math.abs(res[i] - i); - } - return res; + var res = Array(S.length); + + // 第一次遍历:从左往右 + // 找到出现在左侧的 C 字符的最后下标 + for (let i = 0; i < S.length; i++) { + if (S[i] === C) res[i] = i; + // 如果左侧没有出现 C 字符的话,用 Infinity 进行标记 + else res[i] = res[i - 1] === void 0 ? Infinity : res[i - 1]; + } + + // 第二次遍历:从右往左 + // 找出现在右侧的 C 字符的最后下标 + // 如果左侧没有出现过 C 字符,或者右侧出现的 C 字符距离更近,就更新 res[i] + for (let i = S.length - 1; i >= 0; i--) { + if (res[i] === Infinity || res[i + 1] - i < i - res[i]) res[i] = res[i + 1]; + } + + // 计算距离 + for (let i = 0; i < res.length; i++) { + res[i] = Math.abs(res[i] - i); + } + return res; }; ``` @@ -236,21 +305,45 @@ JavaScript Code * @return {number[]} */ var shortestToChar = function (S, C) { - var res = Array(S.length); + var res = Array(S.length); - for (let i = 0; i < S.length; i++) { - if (S[i] === C) res[i] = 0; - // 记录距离:res[i - 1] + 1 - else res[i] = res[i - 1] === void 0 ? Infinity : res[i - 1] + 1; - } + for (let i = 0; i < S.length; i++) { + if (S[i] === C) res[i] = 0; + // 记录距离:res[i - 1] + 1 + else res[i] = res[i - 1] === void 0 ? Infinity : res[i - 1] + 1; + } - for (let i = S.length - 1; i >= 0; i--) { - // 更新距离:res[i + 1] + 1 - if (res[i] === Infinity || res[i + 1] + 1 < res[i]) - res[i] = res[i + 1] + 1; - } + for (let i = S.length - 1; i >= 0; i--) { + // 更新距离:res[i + 1] + 1 + if (res[i] === Infinity || res[i + 1] + 1 < res[i]) res[i] = res[i + 1] + 1; + } + + return res; +}; +``` + +C++ Code - return res; +```cpp +class Solution { +public: + vector shortestToChar(string S, char C) { + int n = S.length(); + vector dist(n, n); + + for (int i = 0; i < n; i++) { + if (S[i] == C) dist[i] = 0; + else if (i > 0) dist[i] = dist[i - 1] + 1; + } + + for (int i = n - 1; i >= 0; i--) { + if (dist[i] == n + || (i < n - 1 && dist[i + 1] + 1 < dist[i])) + dist[i] = dist[i + 1] + 1; + } + + return dist; + } }; ``` @@ -260,14 +353,14 @@ var shortestToChar = function (S, C) { 把 `C` 看成分界线,将 `S` 划分成一个个窗口。然后对每个窗口进行遍历,分别计算每个字符到窗口边界的距离最小值。 -![](https://pic.leetcode-cn.com/1606962060-WhqxbZ-file_1606962060746) +![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/821_1.png) ### 复杂度分析 -- 时间复杂度:$O(N)$,N 是 S 的长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N)$,N 是 S 的长度。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码 (JS/C++) JavaScript Code @@ -278,24 +371,52 @@ JavaScript Code * @return {number[]} */ var shortestToChar = function (S, C) { - // 窗口左边界,如果没有就初始化为 Infinity - let l = S[0] === C ? 0 : Infinity, - // 窗口右边界 - r = S.indexOf(C, 1); + // 窗口左边界,如果没有就初始化为 Infinity,初始化为 S.length 也可以 + let l = S[0] === C ? 0 : Infinity, + // 窗口右边界 + r = S.indexOf(C, 1); - const res = Array(S.length); + const res = Array(S.length); - for (let i = 0; i < S.length; i++) { - // 计算字符到当前窗口左右边界的最小距离 - res[i] = Math.min(Math.abs(i - l), Math.abs(r - i)); + for (let i = 0; i < S.length; i++) { + // 计算字符到当前窗口左右边界的最小距离 + res[i] = Math.min(Math.abs(i - l), Math.abs(r - i)); - // 遍历完了当前窗口的字符后,将整个窗口右移 - if (i === r) { - l = r; - r = S.indexOf(C, l + 1); - } + // 遍历完了当前窗口的字符后,将整个窗口右移 + if (i === r) { + l = r; + r = S.indexOf(C, l + 1); } + } - return res; + return res; }; ``` + +C++ Code + +```cpp +class Solution { +public: + vector shortestToChar(string S, char C) { + int n = S.length(); + + int l = S[0] == C ? 0 : n; + int r = S.find(C, 1); + + vector dist(n); + + for (int i = 0; i < n; i++) { + dist[i] = min(abs(i - l), abs(r - i)); + if (i == r) { + l = r; + r = S.find(C, r + 1); + } + } + + return dist; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From aa5f55786c42c17dffdf31e177dd7da5e7b6dfc5 Mon Sep 17 00:00:00 2001 From: suukii Date: Tue, 11 May 2021 20:43:51 +0800 Subject: [PATCH 23/44] Add py code for 821 --- .../02.shortest-distance-to-a-character.md | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/basic/array-stack-queue/02.shortest-distance-to-a-character.md b/basic/array-stack-queue/02.shortest-distance-to-a-character.md index 700ce43..528f1ed 100644 --- a/basic/array-stack-queue/02.shortest-distance-to-a-character.md +++ b/basic/array-stack-queue/02.shortest-distance-to-a-character.md @@ -15,11 +15,11 @@ https://leetcode-cn.com/problems/shortest-distance-to-a-character/ - [解法 3:贪心](#解法-3贪心) - [思路](#思路-2) - [复杂度分析](#复杂度分析-2) - - [代码 (JS/C++)](#代码-jsc-2) + - [代码 (JS/C++/Python)](#代码-jscpython) - [解法 4:窗口](#解法-4窗口) - [思路](#思路-3) - [复杂度分析](#复杂度分析-3) - - [代码 (JS/C++)](#代码-jsc-3) + - [代码 (JS/C++/Python)](#代码-jscpython-1) ## 题目描述 @@ -258,7 +258,7 @@ public: - 时间复杂度:$O(N)$,N 是 S 的长度。 - 空间复杂度:$O(1)$。 -### 代码 (JS/C++) +### 代码 (JS/C++/Python) JavaScript Code @@ -347,6 +347,29 @@ public: }; ``` +Python Code + +```py +class Solution(object): + def shortestToChar(self, s, c): + """ + :type s: str + :type c: str + :rtype: List[int] + """ + n = len(s) + res = [0 if s[i] == c else None for i in range(n)] + + for i in range(1, n): + if res[i] != 0 and res[i - 1] is not None: + res[i] = res[i - 1] + 1 + + for i in range(n - 2, -1, -1): + if res[i] is None or res[i + 1] + 1 < res[i]: + res[i] = res[i + 1] + 1 + return res +``` + ## 解法 4:窗口 ### 思路 @@ -360,7 +383,7 @@ public: - 时间复杂度:$O(N)$,N 是 S 的长度。 - 空间复杂度:$O(1)$。 -### 代码 (JS/C++) +### 代码 (JS/C++/Python) JavaScript Code @@ -419,4 +442,28 @@ public: }; ``` +Python Code + +```py +class Solution(object): + def shortestToChar(self, s, c): + """ + :type s: str + :type c: str + :rtype: List[int] + """ + n = len(s) + res = [0 for _ in range(n)] + + l = 0 if s[0] == c else n + r = s.find(c, 1) + + for i in range(n): + res[i] = min(abs(i - l), abs(r - i)) + if i == r: + l = r + r = s.find(c, l + 1) + return res +``` + 更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 3391a903f81b87fd2be06f02494a9da04d13e0cf Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 14 May 2021 13:18:21 +0800 Subject: [PATCH 24/44] Update C++ code for 05 --- .../05.implement-queue-using-stacks.md | 83 +++++++++++++++++-- 1 file changed, 76 insertions(+), 7 deletions(-) diff --git a/basic/array-stack-queue/05.implement-queue-using-stacks.md b/basic/array-stack-queue/05.implement-queue-using-stacks.md index bde7560..887880b 100644 --- a/basic/array-stack-queue/05.implement-queue-using-stacks.md +++ b/basic/array-stack-queue/05.implement-queue-using-stacks.md @@ -2,7 +2,7 @@ https://leetcode-cn.com/problems/implement-queue-using-stacks/ -- [232.用栈实现队列](#232dot用栈实现队列) +- [232.用栈实现队列](#232用栈实现队列) - [题目描述](#题目描述) - [方法 1](#方法-1) - [思路](#思路) @@ -11,7 +11,7 @@ https://leetcode-cn.com/problems/implement-queue-using-stacks/ - [方法 2](#方法-2) - [思路](#思路-1) - [复杂度](#复杂度-1) - - [代码](#代码-1) + - [代码(JavaScript/C++)](#代码javascriptc) ## 题目描述 @@ -47,9 +47,15 @@ queue.empty(); // 返回 false ### 思路 -由于队列是 FIFI (先进先出),而栈是 FILO (先进后出),如果要用栈来模拟队列,那么每次往队列尾端增加元素的时候,这个元素需要放在栈底,因为它是最后才会出列。 +由于队列是 FIFI (先进先出),而栈是 FILO (先进后出)。如果要用栈来模拟队列,则每次往模拟队列增加元素的时候,这个元素需要放在栈底,因为它是最后才会出列。 -方法之一是,每次往队列尾端 `push` 一个新元素时,我们都先把栈中的元素尽数清空,然后把新元素入栈,再把刚刚清出来的元素放回栈中,所以还需要一个辅助栈来暂存清出来的元素。 +方法之一是,每次需要往模拟队列尾端 `push` 一个新元素时: + +- 先把栈中的全部元素暂时取出 +- 将新元素入栈到栈底 +- 再将刚刚取出来元素重新入栈 + +因此我们还需要一个辅助栈来存暂时取出来的元素。 ### 复杂度 @@ -95,9 +101,9 @@ class MyQueue { ### 思路 -方法 1 是在元素入列的时候,就考虑好了它出列的顺序,但我们还可以在元素需要出列的时候再来考虑这个问题。这样的话: +方法 1 是在元素入列的时候,就考虑好了它出列的顺序,但我们还可以转换一下思路,在元素需要出列的时候再来考虑这个问题,这样的话: -1. 入列时直接 `push` 到模拟栈中; +1. 入列时,直接 `push` 到栈中; 2. 出列时,由于先入列的元素在栈底,需要先把其他元素弹出,依次压入辅助栈; 3. 栈底元素弹出,出列; 4. 刚才出栈的其他元素依次从辅助栈弹出,重新压入模拟栈。 @@ -116,7 +122,7 @@ class MyQueue { - 时间复杂度:入列是 $O(1)$,出列最差的情况就是每个元素都要从模拟栈中弹出,压入辅助栈,再从辅助栈中弹出,所以是 $O(n)$。 - 空间复杂度:$O(n)$,n 为队列大小。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -172,3 +178,66 @@ class MyStack { } } ``` + +C++ Code +```cpp +#include +using namespace std; + +class MyQueue { +private: + stack stack_in_; + stack stack_out_; + void pour_to_stack_out_() { + while (!stack_in_.empty()) { + int top = stack_in_.top(); + stack_in_.pop(); + stack_out_.push(top); + } + }; +public: + /** Initialize your data structure here. */ + MyQueue() { + + } + + /** Push element x to the back of queue. */ + void push(int x) { + stack_in_.push(x); + } + + /** Removes the element from in front of queue and returns that element. */ + int pop() { + if (stack_out_.empty()) { + pour_to_stack_out_(); + } + int top = stack_out_.top(); + stack_out_.pop(); + return top; + } + + /** Get the front element. */ + int peek() { + if (stack_out_.empty()) { + pour_to_stack_out_(); + } + return stack_out_.top(); + } + + /** Returns whether the queue is empty. */ + bool empty() { + return stack_in_.empty() && stack_out_.empty(); + } +}; + +/** + * Your MyQueue object will be instantiated and called as such: + * MyQueue* obj = new MyQueue(); + * obj->push(x); + * int param_2 = obj->pop(); + * int param_3 = obj->peek(); + * bool param_4 = obj->empty(); + */ +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From d5ef00e3c2795cfeeab87e2c2173d7a03599a953 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 17 May 2021 10:34:25 +0800 Subject: [PATCH 25/44] Add C++ code for 24.swap-nodes-in-pairs --- basic/linked-list/07.swap-nodes-in-pairs.md | 163 ++++++++++++++------ 1 file changed, 116 insertions(+), 47 deletions(-) diff --git a/basic/linked-list/07.swap-nodes-in-pairs.md b/basic/linked-list/07.swap-nodes-in-pairs.md index d901459..d79133f 100644 --- a/basic/linked-list/07.swap-nodes-in-pairs.md +++ b/basic/linked-list/07.swap-nodes-in-pairs.md @@ -2,16 +2,16 @@ https://leetcode-cn.com/problems/swap-nodes-in-pairs/ -- [24. 两两交换链表中的节点](#24dot-两两交换链表中的节点) +- [24. 两两交换链表中的节点](#24-两两交换链表中的节点) - [题目描述](#题目描述) - - [方法 1: 循环](#方法-1-循环) + - [方法 1: 迭代](#方法-1-迭代) - [图解](#图解) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码(JavaScript/C++)](#代码javascriptc) - [方法 2: 递归](#方法-2-递归) - [思路](#思路) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码(JavaScript/C++)](#代码javascriptc-1) ## 题目描述 @@ -46,21 +46,21 @@ https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 方法 1: 循环 +## 方法 1: 迭代 ### 图解 -- 要注意指针改变的顺序,不然可能会丢失节点。 -- 用一个 dummy 节点来简化操作,不用额外考虑链表头部的情况。 +- 要注意指针改变的顺序,不然可能会丢失节点。 +- 用一个 dummy 节点来简化操作,不用额外考虑链表头部的情况。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/07.swap-nodes-in-pairs-02.png) ### 复杂度分析 -- 时间复杂度:$O(N)$, N 为链表长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N)$, N 为链表长度。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -77,26 +77,62 @@ JavaScript Code * @return {ListNode} */ var swapPairs = function (head) { - const dummy = new ListNode(null, head); - let prev = dummy; - let cur = prev.next; - - while (cur && cur.next) { - // 按照上图,指针更换顺序是这样子的 - // prev.next = cur.next - // cur.next = prev.next.next - // prev.next.next = cur - - // 也可以先用一个指针把下一个节点存起来 - const next = cur.next; - cur.next = next.next; - next.next = cur; - prev.next = next; - - prev = cur; - cur = cur.next; + const dummy = new ListNode(null, head); + let prev = dummy; + let cur = prev.next; + + while (cur && cur.next) { + // 按照上图,指针更换顺序是这样子的 + // prev.next = cur.next + // cur.next = prev.next.next + // prev.next.next = cur + + // 也可以先用一个指针把下一个节点存起来 + const next = cur.next; + cur.next = next.next; + next.next = cur; + prev.next = next; + + prev = cur; + cur = cur.next; + } + return dummy.next; +}; +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + if (head == nullptr || head->next == nullptr) return head; + + ListNode* dummy = new ListNode(0, head); + ListNode* prev = dummy; + ListNode* cur = prev->next; + + while (cur != nullptr && cur->next != nullptr) { + ListNode* next = cur->next; + cur->next = next->next; + next->next = cur; + prev->next = next; + + prev = cur; + cur = cur->next; + } + return dummy->next; } - return dummy.next; }; ``` @@ -116,22 +152,22 @@ var swapPairs = function (head) { **小问题之间的关系** -- 下一个递归应该返回互换后的第一个节点 -- 当前递归应该返回互换后的第一个节点给上一个递归 +- 下一个递归应该返回互换后的第一个节点 +- 当前递归应该返回互换后的第一个节点给上一个递归 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/07.swap-nodes-in-pairs-01.png) **递归出口** -- 链表尾部 `head === null` -- 链表最后只剩下一个元素 `head.next === null` +- 链表尾部 `head === null` +- 链表最后只剩下一个元素 `head.next === null` ### 复杂度分析 -- 时间复杂度:$O(N)$, N 为链表长度。 -- 空间复杂度:$O(N)$, N 为链表长度,递归栈的空间。 +- 时间复杂度:$O(N)$, N 为链表长度。 +- 空间复杂度:$O(N)$, N 为链表长度,递归栈的空间。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -148,20 +184,53 @@ JavaScript Code * @return {ListNode} */ var swapPairs = function (head) { - // 递归出口 - if (!head || !head.next) return head; + // 递归出口 + if (!head || !head.next) return head; + + // 先保存下一个节点,避免丢失 + const next = head.next; + + // 下一个递归会返回互换后的第一个节点 + // head 是当前组互换后的第二个节点,head.next 指向下一组就好 + head.next = swapPairs(next.next); + + // 将当前组的两个节点互换 + next.next = head; - // 先保存下一个节点,避免丢失 - const next = head.next; + // 返回互换后的第一个节点 + return next; +}; +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + if (head == nullptr || head->next == nullptr) return head; + + ListNode* first = head; + ListNode* second = first->next; - // 下一个递归会返回互换后的第一个节点 - // head 是当前组互换后的第二个节点,head.next 指向下一组就好 - head.next = swapPairs(next.next); + ListNode* head_of_next_group = swapPairs(second->next); - // 将当前组的两个节点互换 - next.next = head; + first->next = head_of_next_group; + second->next = first; - // 返回互换后的第一个节点 - return next; + return second; + } }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 019d1da9c1dad689651f3fbc65142b9ae64d8e31 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 17 May 2021 17:38:56 +0800 Subject: [PATCH 26/44] Update 109 --- ...nvert-sorted-list-to-binary-search-tree.md | 234 ++++++++++++++++-- 1 file changed, 218 insertions(+), 16 deletions(-) diff --git a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md index 6ae1ec1..9ec4b02 100644 --- a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md +++ b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md @@ -1,5 +1,16 @@ # 109. 有序链表转换二叉搜索树 +- [109. 有序链表转换二叉搜索树](#109-有序链表转换二叉搜索树) + - [题目描述](#题目描述) + - [方法 1:递归](#方法-1递归) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码(JavaScript/C++)](#代码javascriptc) + - [方法 2:空间换时间](#方法-2空间换时间) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码(JavaScript/C++)](#代码javascriptc-1) + ## 题目描述 ``` @@ -28,17 +39,15 @@ ### 思路 -TODO - -- 先用快慢指针找到中间节点 -- 分治构建平衡二叉树 +- 先用快慢指针找到中间节点 +- 分治构建平衡二叉树 ### 复杂度分析 -- 时间复杂度:$O(NlogN)$,N 为链表长度。 -- 空间复杂度:$O(logN)$,N 为链表长度。 +- 时间复杂度:$O(NlogN)$,N 为链表长度。 +- 空间复杂度:$O(logN)$,N 为链表长度。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -63,18 +72,211 @@ JavaScript Code * @return {TreeNode} */ var sortedListToBST = function (head, tail = null) { - if (!head || head === tail) return null; + if (!head || head === tail) return null; + + let slow = head, + fast = head; + while (fast !== tail && fast.next !== tail) { + slow = slow.next; + fast = fast.next.next; + } + + const root = new TreeNode(slow.val); + root.left = sortedListToBST(head, slow); + root.right = sortedListToBST(slow.next, tail); + return root; +}; +``` + +C++ Code - let slow = head, - fast = head; - while (fast !== tail && fast.next !== tail) { - slow = slow.next; - fast = fast.next.next; +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* sortedListToBST(ListNode* head) { + if (head == nullptr) return nullptr; + return sortedListToBST(head, nullptr); } + TreeNode* sortedListToBST(ListNode* head, ListNode* tail) { + if (head == tail) return nullptr; + + ListNode* slow = head; + ListNode* fast = head; + + while (fast != tail && fast->next != tail) { + slow = slow->next; + fast = fast->next->next; + } + + TreeNode* root = new TreeNode(slow->val); + root->left = sortedListToBST(head, slow); + root->right = sortedListToBST(slow->next, tail); + return root; + } +}; +``` + +Python Code + +```py +# Definition for singly-linked list. +# class ListNode(object): +# def __init__(self, x): +# self.val = x +# self.next = None + +# Definition for a binary tree node. +# class TreeNode(object): +# def __init__(self, x): +# self.val = x +# self.left = None +# self.right = None + +class Solution(object): + def sortedListToBST(self, head): + """ + :type head: ListNode + :rtype: TreeNode + """ + if not head: return None + prev, slow, fast = None, head, head + + while fast and fast.next: + prev = slow + slow = slow.next + fast = fast.next.next + + root = TreeNode(slow.val) + if slow == fast: return root + + if prev: prev.next = None + root.left = self.sortedListToBST(head) + root.right = self.sortedListToBST(slow.next) + return root +``` + +## 方法 2:空间换时间 + +### 思路 + +由于寻找链表中点的时间复杂度是 $O(N)$,如果事先使用数组将链表的值存储起来,寻找中点就变成了 $O(1)$ 时间的操作,代价则是 $O(N)$ 的额外空间,问题转换成了**将有序数组转换成搜索二叉树**。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$,N 为链表长度。 +- 空间复杂度:$O(N)$,N 为链表长度。 + +### 代码(JavaScript/C++) + +JavaScript Code - const root = new TreeNode(slow.val); - root.left = sortedListToBST(head, slow); - root.right = sortedListToBST(slow.next, tail); +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * 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 {ListNode} head + * @return {TreeNode} + */ +var sortedListToBST = function (head) { + if (!head) return null; + + const nodes = []; + while (head) { + nodes.push(head.val); + head = head.next; + } + + return sortedArrayToBST(nodes, 0, nodes.length); + + // ******************************************** + function sortedArrayToBST(array, start, end) { + if (start >= end) return null; + + const mid = (((end - start) >> 1) >> 0) + start; + const root = new TreeNode(array[mid]); + root.left = sortedArrayToBST(array, start, mid); + root.right = sortedArrayToBST(array, mid + 1, end); return root; + } +}; +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* sortedListToBST(ListNode* head) { + vector nodes; + while (head != nullptr) { + nodes.push_back(head->val); + head = head->next; + } + return sortedListToBST(nodes, 0, nodes.size()); + } + TreeNode* sortedListToBST(vector& nodes, int start, int end) { + if (start >= end) return nullptr; + + int mid = (end - start) / 2 + start; + TreeNode* root = new TreeNode(nodes[mid]); + root->left = sortedListToBST(nodes, start, mid); + root->right = sortedListToBST(nodes, mid + 1, end); + return root; + } }; ``` From 68b3a703be1117e4aaf4ff650bb3bda683a439bc Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 17 May 2021 18:24:58 +0800 Subject: [PATCH 27/44] =?UTF-8?q?Add=20C++=20code=20for=20160.=E7=9B=B8?= =?UTF-8?q?=E4=BA=A4=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/linked-list/08.rotate-list.md | 2 + ...nvert-sorted-list-to-binary-search-tree.md | 2 + .../10.intersection-of-two-linked-lists.md | 102 ++++++++++++++++-- 3 files changed, 100 insertions(+), 6 deletions(-) diff --git a/basic/linked-list/08.rotate-list.md b/basic/linked-list/08.rotate-list.md index 2915e34..19de0b8 100644 --- a/basic/linked-list/08.rotate-list.md +++ b/basic/linked-list/08.rotate-list.md @@ -79,3 +79,5 @@ var rotateRight = function (head, k) { return newHead; }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) diff --git a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md index 9ec4b02..af6b51a 100644 --- a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md +++ b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md @@ -280,3 +280,5 @@ public: } }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) diff --git a/basic/linked-list/10.intersection-of-two-linked-lists.md b/basic/linked-list/10.intersection-of-two-linked-lists.md index a4a3dce..706792a 100644 --- a/basic/linked-list/10.intersection-of-two-linked-lists.md +++ b/basic/linked-list/10.intersection-of-two-linked-lists.md @@ -7,15 +7,15 @@ https://leetcode-cn.com/problems/intersection-of-two-linked-lists - [方法 1:暴力法](#方法-1暴力法) - [思路](#思路) - [复杂度](#复杂度) - - [代码](#代码) + - [代码(JavaScript/C++)](#代码javascriptc) - [方法 2:哈希表](#方法-2哈希表) - [思路](#思路-1) - [复杂度](#复杂度-1) - - [代码](#代码-1) + - [代码(JavaScript/C++)](#代码javascriptc-1) - [方法 3:双指针](#方法-3双指针) - [思路](#思路-2) - [复杂度](#复杂度-2) - - [代码](#代码-2) + - [代码(JavaScript/C++)](#代码javascriptc-2) ## 题目描述 @@ -36,7 +36,7 @@ https://leetcode-cn.com/problems/intersection-of-two-linked-lists - 时间复杂度:$O(M * N)$, M, N 分别为两个链表的长度。 - 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -71,6 +71,38 @@ var getIntersectionNode = function (headA, headB) { }; ``` +C++ Code +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { + if (headA == NULL || headB == NULL) return NULL; + + ListNode *pA = headA; + + while (pA != NULL) { + ListNode *pB = headB; + while (pB != NULL) { + if (pA == pB) { + return pA; + } + pB = pB->next; + } + pA = pA->next; + } + return NULL; + } +}; +``` + ## 方法 2:哈希表 ### 思路 @@ -83,7 +115,7 @@ var getIntersectionNode = function (headA, headB) { - 时间复杂度:$O(M + N)$, M, N 分别为两个链表的长度。 - 空间复杂度:$O(N)$,N 为链表 A 的长度。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -120,6 +152,35 @@ var getIntersectionNode = function (headA, headB) { }; ``` +C++ Code +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { + if (headA == NULL || headB == NULL) return NULL; + + map seen; + while (headA) { + seen.insert(pair(headA, true)); + headA = headA->next; + } + while (headB) { + if (seen.find(headB) != seen.end()) return headB; + headB = headB->next; + } + return NULL; + } +}; +``` + ## 方法 3:双指针 ### 思路 @@ -140,7 +201,7 @@ var getIntersectionNode = function (headA, headB) { - 时间复杂度:$O(M + N)$, M, N 分别为两个链表的长度。 - 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript/C++) ```js /** @@ -168,3 +229,32 @@ var getIntersectionNode = function (headA, headB) { return pA; }; ``` + +C++ Code +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { + if (headA == NULL || headB == NULL) return NULL; + + ListNode* pA = headA; + ListNode* pB = headB; + while (pA != pB) { + pA = pA == NULL ? headB : pA->next; + pB = pB == NULL ? headA : pB->next; + } + + return pA; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 469a88b27700db34317a2db04b86087be0b85340 Mon Sep 17 00:00:00 2001 From: suukii <30331289+suukii@users.noreply.github.com> Date: Tue, 18 May 2021 10:45:27 +0800 Subject: [PATCH 28/44] Set theme jekyll-theme-midnight --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..1885487 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-midnight \ No newline at end of file From 648b5f2ff64f2a3b49d37e464c4802b64c49ab0a Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 20 May 2021 14:22:45 +0800 Subject: [PATCH 29/44] Update 142&146 --- ...nvert-sorted-list-to-binary-search-tree.md | 6 +- basic/linked-list/11.linked-list-cycle-ii.md | 210 ++++++++++++------ basic/linked-list/12.lru-cache.md | 150 +++++++++++-- 3 files changed, 272 insertions(+), 94 deletions(-) diff --git a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md index af6b51a..f11282c 100644 --- a/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md +++ b/basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md @@ -5,11 +5,11 @@ - [方法 1:递归](#方法-1递归) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码(JavaScript/C++)](#代码javascriptc) + - [代码(JavaScript/C++/Python)](#代码javascriptcpython) - [方法 2:空间换时间](#方法-2空间换时间) - [思路](#思路-1) - [复杂度分析](#复杂度分析-1) - - [代码(JavaScript/C++)](#代码javascriptc-1) + - [代码(JavaScript/C++)](#代码javascriptc) ## 题目描述 @@ -47,7 +47,7 @@ - 时间复杂度:$O(NlogN)$,N 为链表长度。 - 空间复杂度:$O(logN)$,N 为链表长度。 -### 代码(JavaScript/C++) +### 代码(JavaScript/C++/Python) JavaScript Code diff --git a/basic/linked-list/11.linked-list-cycle-ii.md b/basic/linked-list/11.linked-list-cycle-ii.md index 4a527c1..8e4ac1e 100644 --- a/basic/linked-list/11.linked-list-cycle-ii.md +++ b/basic/linked-list/11.linked-list-cycle-ii.md @@ -2,20 +2,20 @@ https://leetcode-cn.com/problems/linked-list-cycle-ii/ -- [142.环形链表 II](#142dot环形链表-ii) +- [142.环形链表 II](#142环形链表-ii) - [题目描述](#题目描述) - - [方法 1:哈希表标记已遍历节点](#方法-1哈希表标记已遍历节点) + - [方法 1:哈希法](#方法-1哈希法) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码(JavaScript/C++)](#代码javascriptc) - [方法 2:双指针](#方法-2双指针) - [思路](#思路-1) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码(JavaScript)](#代码javascript) - [方法 3:双指针 + 数学证明](#方法-3双指针--数学证明) - [思路](#思路-2) - [复杂度分析](#复杂度分析-2) - - [代码](#代码-2) + - [代码(JavaScript/C++)](#代码javascriptc-1) ## 题目描述 @@ -34,21 +34,21 @@ https://leetcode-cn.com/problems/linked-list-cycle-ii/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 方法 1:哈希表标记已遍历节点 +## 方法 1:哈希法 ### 思路 -1. 从头开始遍历链表并给每个节点增加一个“已遍历”的标记; -2. 如果在遍历过程中遇到了一个“已遍历”的节点,说明这个就是环的入口了; -3. 题目要求不允许修改给定的链表,但我们可以用一个 hashmap 来记录; -4. 由于题目中没有提到节点值是否唯一,也就是说两个不同的节点可能会有相同的值,那仅用节点值作为 hashmap 的 key 是不够的,得用整个节点对象来当 key,所以需要 `Map`。 +1. 可以从头开始遍历链表并给每个节点增加一个“已遍历”的标记; +2. 如果在遍历过程中遇到了一个“已遍历”的节点,说明这就是环的入口; +3. 但题目不允许修改给定的链表,所以我们可以用一个额外的 hashmap 来记录; +4. 注意题目中没有提到节点值是否唯一,所以仅用节点值作为 hashmap 的 key 是不够的,需要用到整个节点对象来当 key。 ### 复杂度分析 -- 时间复杂度:$O(n)$, n 为链表长度。 -- 空间复杂度:$O(n)$。 +- 时间复杂度:$O(n)$, n 为链表长度。 +- 空间复杂度:$O(n)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -66,15 +66,41 @@ JavaScript Code * @return {ListNode} */ var detectCycle = function (head) { - const map = new Map(); + const map = new Map(); - while (head) { - if (map.has(head)) return head; - map.set(head, true); - head = head.next; - } + while (head) { + if (map.has(head)) return head; + map.set(head, true); + head = head.next; + } + + return null; +}; +``` - return null; +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + set seen; + ListNode *cur = head; + while (cur != NULL) { + if (seen.find(cur) != seen.end()) return cur; + seen.insert(cur); + cur = cur->next; + } + return NULL; + } }; ``` @@ -83,19 +109,19 @@ var detectCycle = function (head) { ### 思路 1. 先使用快慢指针确定链表是否有环; -2. 如果链表有环,那快慢指针相遇的点一定是在环上; -3. 接着把一个指针 A 移到链表头部,另一个指针 B 留在环内; -4. 指针 A 开始遍历环外的节点,指针 A 每走一步,指针 B 在环内走一圈; +2. 如果链表有环,那快慢指针相遇的点一定是在环中; +3. 接着把指针 A 移到链表头部,指针 B 留在环内; +4. 指针 A 开始遍历环外的节点,指针 B 遍历环内的节点,指针 A 每走一步,指针 B 在环内走一圈; 5. 如果指针 A 和指针 B 相遇了,说明这个节点就是环的入口。 > 因为环和环外的唯一交点就是环的入口点 ### 复杂度分析 -- 时间复杂度:$O(n*p)$, n 是环外链表的长度,p 是环的长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(n*p)$, n 是环外链表的长度,p 是环的长度。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript) JavaScript Code @@ -113,31 +139,31 @@ JavaScript Code * @return {ListNode} */ var detectCycle = function (head) { - let slow = head, - fast = head; - // 快慢指针确定有环 - while (fast && fast.next) { - slow = slow.next; - fast = fast.next.next; - // 确定有环,开始找环的第一个节点 - if (slow === fast) return findConnection(head, fast); - } - return null; - - // ****************************************** - - function findConnection(head, loopNode) { - // p1 走一步,p2 绕环一圈 - let p1 = head; - while (true) { - let p2 = loopNode; - while (p2.next !== loopNode && p2.next !== p1) { - p2 = p2.next; - } - if (p2.next === p1) return p1; - p1 = p1.next; - } + let slow = head, + fast = head; + // 快慢指针确定有环 + while (fast && fast.next) { + slow = slow.next; + fast = fast.next.next; + // 确定有环,开始找环的第一个节点 + if (slow === fast) return findConnection(head, fast); + } + return null; + + // ****************************************** + + function findConnection(head, loopNode) { + // p1 走一步,p2 绕环一圈 + let p1 = head; + while (true) { + let p2 = loopNode; + while (p2.next !== loopNode && p2.next !== p1) { + p2 = p2.next; + } + if (p2.next === p1) return p1; + p1 = p1.next; } + } }; ``` @@ -180,7 +206,7 @@ class Solution(object): ### 思路 -先用快慢指针确定链表有环,快慢指针会在环上的某个节点相遇。 +先用快慢指针确定链表是否有环,如果是环形链表,快慢指针会在环内的某个节点相遇。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/first_node_of_loop_in_linked_list_0.png) @@ -188,17 +214,23 @@ class Solution(object): **快指针** -假设走到相遇点之前,快指针在环内走了 x 圈,那快指针走过的总路程可以用 `S(fast) = a + x(b + c) + b` 来表示,其中 `(b + c)` 就是环的长度。 +假设走到相遇点之前,快指针在环内走了 x 圈,那快指针走过的总路程可以用 + +`S(fast) = a + x(b + c) + b` + +来表示,其中 `(b + c)` 就是环的长度。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/first_node_of_loop_in_linked_list_1.png) **慢指针** -假设走到相遇点之前,慢指针在环内走了 y 圈,同理可得慢指针走过的总路程是 `S(slow) = a + y(b + c) + b`。 +假设走到相遇点之前,慢指针在环内走了 y 圈,同理可得慢指针走过的总路程是 + +`S(slow) = a + y(b + c) + b` 而由于快指针的速度是慢指针速度的 2 倍,所以可得以下方程式: -`S(slow) = 2S(fast)` => `a + x(b + c) + b = 2(a + y(b + c) + b)` +`2S(slow) = S(fast)` => `2(a + x(b + c) + b) = a + y(b + c) + b` 稍微整理一下我们就得到了: @@ -214,10 +246,10 @@ class Solution(object): ### 复杂度分析 -- 时间复杂度:$O(n)$,n 为链表长度。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(n)$,n 为链表长度。 +- 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -235,24 +267,60 @@ JavaScript Code * @return {ListNode} */ var detectCycle = function (head) { - let fast = head, - slow = head; - - // 快慢指针确定有环 - while (fast && fast.next) { - fast = fast.next.next; + let fast = head, + slow = head; + + // 快慢指针确定有环 + while (fast && fast.next) { + fast = fast.next.next; + slow = slow.next; + + // 确定有环,开始找环的第一个节点 + if (fast === slow) { + slow = head; + while (slow !== fast) { slow = slow.next; + fast = fast.next; + } + return slow; + } + } + return null; +}; +``` - // 确定有环,开始找环的第一个节点 - if (fast === slow) { - slow = head; - while (slow !== fast) { - slow = slow.next; - fast = fast.next; +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + ListNode *slow = head; + ListNode *fast = head; + + while (fast && fast->next) { + slow = slow->next; + fast = fast->next->next; + if (slow == fast) { + fast = head; + while (slow != fast) { + slow = slow->next; + fast = fast->next; + } + return slow; } - return slow; } + return NULL; } - return null; }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/basic/linked-list/12.lru-cache.md b/basic/linked-list/12.lru-cache.md index 1a0ad10..40b73ce 100644 --- a/basic/linked-list/12.lru-cache.md +++ b/basic/linked-list/12.lru-cache.md @@ -2,12 +2,13 @@ https://leetcode-cn.com/problems/lru-cache/ -- [146. LRU 缓存机制](#146dot-lru-缓存机制) +- [146. LRU 缓存机制](#146-lru-缓存机制) - [题目描述](#题目描述) - - [思路](#思路) - - [复杂度分析](#复杂度分析) - - [伪代码](#伪代码) - - [代码](#代码) + - [方法1: 哈希表+双向链表](#方法1-哈希表双向链表) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [伪代码](#伪代码) + - [代码(JavaScript/C++)](#代码javascriptc) ## 题目描述 @@ -40,44 +41,52 @@ cache.get(4); // 返回 4 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 思路 +## 方法1: 哈希表+双向链表 -假设我们有一个玩具摊位,可以向顾客展示小玩具,但是摊位大小有限,我们不能把所有的玩具都摆在摊位上,所以我们就把大部分的玩具都放在了仓库里。 +### 思路 + +先来看个非计算机的例子理解下题意,假设我们有一个玩具摊位,可以向顾客展示小玩具。玩具很多,但摊位大小有限,不能一次性展示所有玩具,于是我们就把大部分的玩具都放在了仓库里。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_0.png) -如果有顾客来问,我们就去仓库把那个玩具拿出来,摆在摊位上。 +如果有顾客来询问某个玩具,我们就去仓库把那个玩具拿出来,摆在摊位上。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_1.png) -因为最上面的那个位置最显眼,所以我们想总是把最新拿出来的玩具放在那。 +因为摊位最上面的位置最显眼,所以我们总是把最新拿出来的玩具放在那。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_2.png) -但是摊位大小有限,很快就摆满了,如果这时又来了顾客想看新玩具。 +不过由于摊位大小有限,很快就摆满了,这时如果又来了顾客想看新玩具。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_3.png) -我们只能把最下面的玩具拿回仓库(因为最下面的位置相对没那么受欢迎),腾出一个位置来放新玩具。 +我们只能把摊位最下面的玩具拿回仓库(因为最下面的位置相对没那么受欢迎),然后其他玩具往下移,腾出最上面的位置来放新玩具。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_4.png) -如果顾客想看的玩具就在摊位上,我们就可以直接展示这个玩具,同时把它放到最上面的位置(有人问说明它受欢迎嘛),其他的玩具就要挪挪位置了。 +如果顾客想看的玩具就摆在摊位上,我们就可以把这个玩具直接移到摊位最上面的位置,其他的玩具就要往下挪挪位置了。还记得我们的规则吧,最近有人询问的玩具要摆在最上面显眼的位置。 ![](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/LRU_5.png) -回到计算机问题上面来,我们要用什么来表示我们的玩具摊位呢,如果用数组,玩具在摊位上的位置挪来挪去的,时间复杂度得是 $O(N)$,所以只能用链表了。 +回到计算机问题上面来,玩具摊位代表的就是缓存空间,我们需要考虑的问题是使用哪种数据结构来表示玩具摊位。 + +**选择1: 数组** + +如果选择数组,因为玩具在摊位上的位置会挪来挪去,时间复杂度是 $O(N)$,不符合题意。 -用链表的话,随意移除一个节点的时间复杂度是 $O(1)$,移除节点后,我们还得把它前后两个节点连起来,所以用双向链表会比较方便。 +**选择2: 链表** -但是链表获取节点的时间复杂度是 $O(N)$,我们手动移动玩具的时候,只需要看一眼就知道要找的玩具在哪个位置上,但是计算机没有那么聪明,所以我们还需要一个数据结构(哈希表)来帮计算机记录什么玩具在什么位置上。 +- 如果选择链表,我们知道在已知位置上新增节点,或者移除一个已知节点的时间复杂度是 $O(1)$。不过,链表查找节点的时间复杂度是 $O(N)$,同样不符合题意,但这还有办法补救。 +- 在玩具摊位的例子中,我们手动移动玩具的时候,只需要看一眼就知道要找的玩具在哪个位置上,但计算机没那么聪明,因此还需要给它一个脑子(哈希表)来记录什么玩具在什么位置上,也就是要用一个哈希表来记录每个 key 对应的链表节点引用。这样查找链表节点的时间复杂度就降到了 $O(1)$,不过代价是空间复杂度增加到了 $O(N)$。 +- 另外,由于移除链表节点后还需要把该节点前后的两个节点连起来,因此我们需要的是双向链表而不是单向链表。 -## 复杂度分析 +### 复杂度分析 - 时间复杂度:$O(1)$。 -- 空间复杂度:链表 $O(N)$,哈希表 $O(N)$,结果还是 $O(N)$。 +- 空间复杂度:链表 $O(N)$,哈希表 $O(N)$,结果还是 $O(N)$,N 为容量大小。 -## 伪代码 +### 伪代码 ``` // put @@ -92,8 +101,8 @@ else: 删除它在哈希表中的映射 新建一个节点 - 在哈希表中增加映射 把节点加到链表头部 + 在哈希表中增加映射 // get @@ -105,7 +114,7 @@ else: 返回 -1 ``` -## 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -190,3 +199,104 @@ class LRUCache { * obj.put(key,value) */ ``` + +C++ Code +```cpp +class DLinkedListNode { +public: + int key; + int value; + DLinkedListNode *prev; + DLinkedListNode *next; + DLinkedListNode() : key(0), value(0), prev(NULL), next(NULL) {}; + DLinkedListNode(int k, int val) : key(k), value(val), prev(NULL), next(NULL) {}; +}; + +class LRUCache { +public: + LRUCache(int capacity) : capacity_(capacity) { + // 创建两个 dummy 节点来简化操作,这样就不用特殊对待头尾节点了 + dummy_head_ = new DLinkedListNode(); + dummy_tail_ = new DLinkedListNode(); + dummy_head_->next = dummy_tail_; + dummy_tail_->prev = dummy_head_; + } + + int get(int key) { + if (!key_exists_(key)) { + return -1; + } + // 1. 通过哈希表找到 key 对应的节点 + // 2. 将节点移到链表头部 + // 3. 返回节点值 + DLinkedListNode *node = key_node_map_[key]; + move_to_head_(node); + return node->value; + } + + void put(int key, int value) { + if (key_exists_(key)) { + // key 存在的情况 + DLinkedListNode *node = key_node_map_[key]; + node->value = value; + move_to_head_(node); + } else { + // key 不存在的情况: + // 1. 如果缓存空间满了,先删除尾节点,再新建节点 + // 2. 否则直接新建节点 + if (is_full_()) { + DLinkedListNode *tail = dummy_tail_->prev; + remove_node_(tail); + key_node_map_.erase(tail->key); + } + + DLinkedListNode *new_node = new DLinkedListNode(key, value); + add_to_head_(new_node); + key_node_map_[key] = new_node; + } + } +private: + unordered_map key_node_map_; + DLinkedListNode *dummy_head_; + DLinkedListNode *dummy_tail_; + int capacity_; + + void move_to_head_(DLinkedListNode *node) { + remove_node_(node); + add_to_head_(node); + }; + + void add_to_head_(DLinkedListNode *node) { + DLinkedListNode *prev_head = dummy_head_->next; + + dummy_head_->next = node; + node->prev = dummy_head_; + + node->next = prev_head; + prev_head->prev = node; + }; + + void remove_node_(DLinkedListNode *node) { + node->prev->next = node->next; + node->next->prev = node->prev; + node->prev = node->next = NULL; + }; + + bool key_exists_(int key) { + return key_node_map_.count(key) > 0; + }; + + bool is_full_() { + return key_node_map_.size() == capacity_; + }; +}; + +/** + * Your LRUCache object will be instantiated and called as such: + * LRUCache* obj = new LRUCache(capacity); + * int param_1 = obj->get(key); + * obj->put(key,value); + */ +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From c67fd099f9df702c710022439801ad8307363906 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 24 May 2021 13:44:37 +0800 Subject: [PATCH 30/44] =?UTF-8?q?Update=20129.=E6=B1=82=E6=A0=B9=E5=88=B0?= =?UTF-8?q?=E5=8F=B6=E5=AD=90=E8=8A=82=E7=82=B9=E6=95=B0=E5=AD=97=E4=B9=8B?= =?UTF-8?q?=E5=92=8C=20with=20cpp=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../15.sum-root-to-leaf-numbers.md | 94 +++++++++++++++++-- 1 file changed, 86 insertions(+), 8 deletions(-) diff --git a/basic/binary-tree/15.sum-root-to-leaf-numbers.md b/basic/binary-tree/15.sum-root-to-leaf-numbers.md index c7d97e5..bb0b44f 100644 --- a/basic/binary-tree/15.sum-root-to-leaf-numbers.md +++ b/basic/binary-tree/15.sum-root-to-leaf-numbers.md @@ -7,11 +7,11 @@ https://leetcode-cn.com/problems/sum-root-to-leaf-numbers - [方法 1:递归](#方法-1递归) - [思路](#思路) - [复杂度](#复杂度) - - [代码](#代码) + - [代码(JavaScript/Python/C++)](#代码javascriptpythonc) - [方法 2:BFS](#方法-2bfs) - [思路](#思路-1) - [复杂度](#复杂度-1) - - [代码](#代码-1) + - [代码(JavaScript/C++)](#代码javascriptc) ## 题目描述 @@ -58,11 +58,11 @@ https://leetcode-cn.com/problems/sum-root-to-leaf-numbers ### 思路 -lucifer 的[递归小技巧](https://github.com/leetcode-pp/91alg-1/issues/32#issuecomment-643620727)练习课堂。 +lucifer 的**递归小技巧**练习课堂。 1. 定义函数功能,先不用管其具体实现。 - 我们需要一个函数,给定一个二叉树的根节点,返回根节点到各个叶子节点连成的数字的和。假设我们已经有这个函数 `F`,那问题就转化为 `F(root)` 了。 + 首先我们需要一个函数,给定一个二叉树的根节点,返回根节点到各个叶子节点连成的数字的和。假设我们已经有这个函数 `F`,那问题转化成 `F(root)`。 唔...其实问题还要复杂一丢丢,因为我们得要遍历到叶子节点的时候才能确定连成的数字,而要知道这个数字是什么,还要知道这个叶子节点的父节点,以及它父节点的父节点,...,一直到根节点,也就是说我们需要在遍历开始的时候就用一个变量来记录走过的节点。那现在我们的问题就转化成了 `F(root, num)`。 @@ -83,7 +83,7 @@ lucifer 的[递归小技巧](https://github.com/leetcode-pp/91alg-1/issues/32#is - 时间复杂度: $O(N)$,N 为二叉树节点数。 - 空间复杂度: $O(h)$,h 为二叉树高度。 -### 代码 +### 代码(JavaScript/Python/C++) JavaScript Code @@ -129,19 +129,48 @@ class Solution(object): return self.sumNumbers(root.left, num) + self.sumNumbers(root.right, num) ``` +C++ Code + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int sumNumbers(TreeNode* root) { + return sumNumbers(root, 0); + } + int sumNumbers(TreeNode* root, int num) { + if (root == nullptr) return 0; + num = num * 10 + root->val; + if (root->left == nullptr && root->right == nullptr) return num; + return sumNumbers(root->left, num) + sumNumbers(root->right, num); + } + +}; +``` + ## 方法 2:BFS ### 思路 -- 层级遍历,将每一层节点的数字传给下一层,存在 `node.val` 中。 -- 如果当前节点没有子节点了,就把它的值加到结果中。 +- 对二叉树进行层级遍历,将每一层节点的数字传给下一层,存在 `node.val` 中。 +- 如果当前节点没有子节点了,就可以把它的值加到结果中去了。 ### 复杂度 - 时间复杂度: $O(N)$,N 为二叉树节点数。 - 空间复杂度: $O(q)$,q 为队列长度。最坏情况是满二叉树,此时 q 为 $2/N$,即为 $O(N)$,N 为二叉树节点数。 -## 代码 +## 代码(JavaScript/C++) JavaScript Code @@ -184,3 +213,52 @@ var sumNumbers = function (root) { return sum; }; ``` + +C++ Code + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int sumNumbers(TreeNode* root) { + if (!root) return 0; + + int total = 0; + queue level; + level.push(root); + + while (!level.empty()) { + int size = level.size(); + while (size--) { + TreeNode* node = level.front(); + level.pop(); + + if (node->left) { + node->left->val += node->val * 10; + level.push(node->left); + } + if (node->right) { + node->right->val += node->val * 10; + level.push(node->right); + } + if (!node->left && !node->right) { + total += node->val; + } + } + } + return total; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From ce4ab0cc74c2e6c14ef07e385a152a6f9517b49d Mon Sep 17 00:00:00 2001 From: suukii Date: Tue, 25 May 2021 10:18:36 +0800 Subject: [PATCH 31/44] =?UTF-8?q?Update=20cpp=20code=20for=20513.=E6=89=BE?= =?UTF-8?q?=E6=A0=91=E5=B7=A6=E4=B8=8B=E8=A7=92=E7=9A=84=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../16.find-bottom-left-tree-value.md | 92 +++++++++++++++++-- 1 file changed, 84 insertions(+), 8 deletions(-) diff --git a/basic/binary-tree/16.find-bottom-left-tree-value.md b/basic/binary-tree/16.find-bottom-left-tree-value.md index 6aab767..391e33b 100644 --- a/basic/binary-tree/16.find-bottom-left-tree-value.md +++ b/basic/binary-tree/16.find-bottom-left-tree-value.md @@ -4,16 +4,16 @@ https://leetcode-cn.com/problems/find-bottom-left-tree-value/ - [513.找树左下角的值](#513找树左下角的值) - [题目描述](#题目描述) - - [方法 1:BFS](#方法-1bfs) + - [方法 1:层次遍历](#方法-1层次遍历) - [思路](#思路) - [伪代码](#伪代码) - - [代码](#代码) + - [代码(JavaScript/Python/C++)](#代码javascriptpythonc) - [复杂度分析](#复杂度分析) - [方法 2:DFS](#方法-2dfs) - [思路](#思路-1) - [伪代码](#伪代码-1) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码(JavaScript/Python/C++)](#代码javascriptpythonc-1) ## 题目描述 @@ -55,13 +55,13 @@ https://leetcode-cn.com/problems/find-bottom-left-tree-value/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` -## 方法 1:BFS +## 方法 1:层次遍历 ### 思路 -按照题目意思来做,找到最后一层,返回最左边的节点。 +按照题目意思我们只需要找到最后一层,返回最左边的节点即可。 -所以只要,对二叉树进行层次遍历,遍历到最后一层的时候,返回第一个节点就行了。 +所以只要对二叉树进行层次遍历,等遍历到最后一层的时候,返回第一个节点。 ![bfs](https://cdn.jsdelivr.net/gh/suukii/91-days-algorithm/assets/513_0.png) @@ -104,7 +104,7 @@ while (queue.length) { } ``` -### 代码 +### 代码(JavaScript/Python/C++) JavaScript Code @@ -199,6 +199,45 @@ var findBottomLeftValue = function (root) { }; ``` +C++ Code + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int findBottomLeftValue(TreeNode* root) { + TreeNode* bottom_left = nullptr; + queue level; + level.push(root); + + while (!level.empty()) { + int size = level.size(); + bottom_left = level.front(); + + while (size--) { + TreeNode* node = level.front(); + level.pop(); + if (node->left) level.push(node->left); + if (node->right) level.push(node->right); + } + } + + return bottom_left->val; + + } +}; +``` + ### 复杂度分析 - 时间复杂度:$O(N)$,其中 N 为节点数。 @@ -246,7 +285,7 @@ var findBottomLeftValue = function (root) { - 时间复杂度:$O(N)$,其中 N 为节点数。 - 空间复杂度:$O(h)$,其中 $h$ 为树的深度,最坏的情况 $h$ 等于 $N$,其中 N 为节点数,此时树退化到链表。 -### 代码 +### 代码(JavaScript/Python/C++) JavaScript Code @@ -317,3 +356,40 @@ class Solution(object): return self._ans ``` + +C++ Code + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + int findBottomLeftValue(TreeNode* root) { + findBottomLeftValue(root, 1); + return ans_; + } + void findBottomLeftValue(TreeNode* root, int depth) { + if (depth > max_depth_) { + max_depth_ = depth; + ans_ = root->val; + } + + if (root->left) findBottomLeftValue(root->left, depth + 1); + if (root->right) findBottomLeftValue(root->right, depth + 1); + } +private: + int max_depth_ = 0; + int ans_; +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 5bdd117352f8fbd943dc4de1631592cbaa8bcab7 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 28 May 2021 09:58:35 +0800 Subject: [PATCH 32/44] Update two-sum with cpp --- ...rtical-order-traversal-of-a-binary-tree.md | 2 ++ basic/hashmap/19.two-sum.md | 32 ++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md b/basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md index 9b94910..6aef18f 100644 --- a/basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md +++ b/basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md @@ -209,3 +209,5 @@ var verticalTraversal = function (root) { } }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/basic/hashmap/19.two-sum.md b/basic/hashmap/19.two-sum.md index 2672d22..19adfa6 100644 --- a/basic/hashmap/19.two-sum.md +++ b/basic/hashmap/19.two-sum.md @@ -7,15 +7,15 @@ https://leetcode-cn.com/problems/two-sum - [方法 1:哈希表](#方法-1哈希表) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码(JavaScript/Python/C++)](#代码javascriptpythonc) - [方法 2:排序+双指针](#方法-2排序双指针) - [思路](#思路-1) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码](#代码) - [方法 3:暴力法](#方法-3暴力法) - [思路](#思路-2) - [复杂度分析](#复杂度分析-2) - - [代码](#代码-2) + - [代码](#代码-1) ## 题目描述 @@ -51,7 +51,7 @@ https://leetcode-cn.com/problems/two-sum - 时间复杂度:$O(N)$,N 为数组长度,最坏的情况下数组中的每个元素都被访问一次,访问数组元素的时间是 $O(1)$,哈希表插入和查询元素的时间也是 $O(1)$。 - 空间复杂度:$O(N)$,N 为数组长度,用来存元素和下标的哈希表所需的空间。 -### 代码 +### 代码(JavaScript/Python/C++) JavaScript Code @@ -93,6 +93,26 @@ class Solution(object): hashmap[n] = i ``` +C++ Code + +```cpp +class Solution { +public: + vector twoSum(vector& nums, int target) { + map seen; + for (int i = 0; i < nums.size(); i++) { + int sub = target - nums[i]; + auto it = seen.find(sub); + if (it != seen.end()) { + return {it->second, i}; + } + seen[nums[i]] = i; + } + return {}; + } +}; +``` + ## 方法 2:排序+双指针 ### 思路 @@ -103,7 +123,7 @@ class Solution(object): ### 复杂度分析 - 时间复杂度:$O(NlogN)$,N 为数组长度。 -- 空间复杂度:$O(1)$。(不是很确定,是 $O(1)$ 还是 $O(N)$) +- 空间复杂度:$O(N)$。 ### 代码 @@ -170,3 +190,5 @@ var twoSum = function (nums, target) { } }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From fcc4bb1b1f244543f97a29cad032ff3ef7ea9ea3 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 31 May 2021 11:52:47 +0800 Subject: [PATCH 33/44] =?UTF-8?q?Update=20cpp=20code=20for=203.=20?= =?UTF-8?q?=E6=97=A0=E9=87=8D=E5=A4=8D=E5=AD=97=E7=AC=A6=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E9=95=BF=E5=AD=90=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-substring-without-repeating-characters.md | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/basic/hashmap/22.longest-substring-without-repeating-characters.md b/basic/hashmap/22.longest-substring-without-repeating-characters.md index 9cfa317..a757866 100644 --- a/basic/hashmap/22.longest-substring-without-repeating-characters.md +++ b/basic/hashmap/22.longest-substring-without-repeating-characters.md @@ -7,7 +7,7 @@ https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ - [方法 1:滑动窗口+哈希表](#方法-1滑动窗口哈希表) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码(JavaScript/C++)](#代码javascriptc) ## 题目描述 @@ -50,9 +50,9 @@ https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ ### 复杂度分析 - 时间复杂度:$O(N)$,N 为 s 长度。 -- 空间复杂度:$O(d)$,d 是字符集的大小,但哈希表最大的大小也只是 $O(N)$。 +- 空间复杂度:$O(d)$,d 是字符集的大小,但哈希表的大小最大也只是 $O(N)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -83,3 +83,29 @@ var lengthOfLongestSubstring = function (s) { return max; }; ``` + +C++ Code + +```cpp +class Solution { +public: + int lengthOfLongestSubstring(string s) { + unordered_map seen; + int max_len = 0, l = 0, r = 0; + while (r < s.size()) { + if (seen.count(s[r]) > 0) { + int last_pos = seen[s[r]]; + if (last_pos >= l && last_pos <= r) { + l = last_pos + 1; + } + } + max_len = max(max_len, r - l + 1); + seen[s[r]] = r; + r++; + } + return max_len; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From e358a55dff4d50c582b94f1a8c3bff96f885ed6f Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 24 Jun 2021 11:11:43 +0800 Subject: [PATCH 34/44] =?UTF-8?q?feat:=20149.=20=E7=9B=B4=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=9C=80=E5=A4=9A=E7=9A=84=E7=82=B9=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- basic/array-stack-queue/04.decode-string.md | 40 +++- ...bstring-with-concatenation-of-all-words.md | 35 ++++ basic/hashmap/ext-max-points-on-a-line.md | 149 ++++++++++++++ extensions/1755.closest-subsequence-sum.md | 186 ++++++++++++++++++ ...umber-of-longest-increasing-subsequence.md | 106 ++++++++++ 6 files changed, 517 insertions(+), 2 deletions(-) create mode 100644 basic/hashmap/ext-max-points-on-a-line.md create mode 100644 extensions/1755.closest-subsequence-sum.md create mode 100644 medium/dp/number-of-longest-increasing-subsequence.md diff --git a/README.md b/README.md index 2903e66..44ee392 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ - [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) - [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) - [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) -- [ ] [149.直线上最多的点数](https://leetcode-cn.com/problems/max-points-on-a-line) +- [x] [149.直线上最多的点数](./basic/hashmap/ext-max-points-on-a-line.md) ### 双指针 @@ -188,6 +188,7 @@ **动态规划系列** - [x] [【day-37】62.不同路径](./medium/hot/37.unique-paths.md) +- [x] [673. 最长递增子序列的个数](./medium/dp/number-of-longest-increasing-subsequence.md) - [ ] [70. 爬楼梯](./) - [ ] [121. 买卖股票的最佳时机](./) - [ ] [122. 买卖股票的最佳时机 II](./) diff --git a/basic/array-stack-queue/04.decode-string.md b/basic/array-stack-queue/04.decode-string.md index 263ded5..176a241 100644 --- a/basic/array-stack-queue/04.decode-string.md +++ b/basic/array-stack-queue/04.decode-string.md @@ -2,7 +2,7 @@ https://leetcode-cn.com/problems/decode-string/ -- [394.字符串解码](#394dot字符串解码) +- [394.字符串解码](#394字符串解码) - [题目描述](#题目描述) - [方法 1: 递归](#方法-1-递归) - [思路](#思路) @@ -104,6 +104,44 @@ var decodeString = function (s, i = 0) { }; ``` +C++ Code +```cpp +class Solution { +private: + int ptr_ = 0; +public: + string decodeString(string s) { + string decoded_str = ""; + string repeat_times = ""; + + int i = ptr_; + while (i < s.length()) { + if (isalpha(s[i])) { + decoded_str += s[i]; + i++; + } else if (isdigit(s[i])) { + repeat_times += s[i]; + i++; + } else if (s.compare(i, 1, "[") == 0) { + ptr_ = i + 1; + string pattern = decodeString(s); + i = ptr_; + + int times = stoi(repeat_times); + for (int t = 0; t < times; t++) { + decoded_str += pattern; + } + repeat_times = ""; + } else if (s.compare(i, 1, "]") == 0) { + ptr_ = i + 1; + return decoded_str; + } + } + return decoded_str; + } +}; +``` + ## 方法 2: 循环 + 栈 可以用递归解决的问题,也可以用循环来解决。 diff --git a/basic/hashmap/23.substring-with-concatenation-of-all-words.md b/basic/hashmap/23.substring-with-concatenation-of-all-words.md index 9d97616..0545dc9 100644 --- a/basic/hashmap/23.substring-with-concatenation-of-all-words.md +++ b/basic/hashmap/23.substring-with-concatenation-of-all-words.md @@ -67,6 +67,39 @@ naive 的想法是,将 words 里面的单词组合成字符串,然后到 s JavaScript Code +```js +/** + * @param {string} s + * @param {string[]} words + * @return {number[]} + */ +var findSubstring = function(s, words) { + const wordLen = words[0].length; + const substrLen = wordLen * words.length; + const initialWordsMap = words.reduce((map, w) => { + map[w] = (map[w] || 0) + 1; + return map; + }, {}) + const res = []; + + for (let i = 0; i <= s.length - substrLen; i++) { + const wordsMap = {...initialWordsMap}; + for (let j = i; j < i + substrLen; j += wordLen) { + const word = s.slice(j, j + wordLen); + if (!(word in wordsMap) || wordsMap[word] == 0) break; + wordsMap[word]--; + } + if (usedUpWords(wordsMap)) res.push(i); + } + return res; + + // ****************************************** + function usedUpWords(map) { + return Object.values(map).every(n => n == 0); + } +}; +``` + ```js /** * @param {string} s @@ -99,3 +132,5 @@ var findSubstring = function (s, words) { return res; }; ``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/basic/hashmap/ext-max-points-on-a-line.md b/basic/hashmap/ext-max-points-on-a-line.md new file mode 100644 index 0000000..de98bf4 --- /dev/null +++ b/basic/hashmap/ext-max-points-on-a-line.md @@ -0,0 +1,149 @@ +# 149. 直线上最多的点数 + +https://leetcode-cn.com/problems/max-points-on-a-line/ + +## 题目描述 + +``` +给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 + +  + +示例 1: +``` +![](https://assets.leetcode.com/uploads/2021/02/25/plane1.jpg) +``` +输入:points = [[1,1],[2,2],[3,3]] +输出:3 +示例 2: +``` +![](https://assets.leetcode.com/uploads/2021/02/25/plane2.jpg) +``` +输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] +输出:4 +  + +提示: + +1 <= points.length <= 300 +points[i].length == 2 +-104 <= xi, yi <= 104 +points 中的所有点 互不相同 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/max-points-on-a-line +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:枚举 + +### 思路 + +这题其实不难,只需要知道两个朴素的数学知识: + +- 两点确定一条直线 +- 用斜率方程来判断某点是否在一条直线上 + +暴力点的思路就是,枚举所有两个点的组合: + +- 先用两个点确定一条直线 +- 枚举其他点,判断点是否在这条直线上 + +### 复杂度分析 + +- 时间复杂度:$O(N^3)$,枚举直线的时间是 $O(N^2)$,计算在直线上的点的时间是 $O(N)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[][]} points + * @return {number} + */ +var maxPoints = function(points) { + let max = 1; + // 点两两组合,枚举所有组合 + for (let i = 0; i < points.length; i++) { + for (let j = i + 1; j < points.length; j++) { + // points[i] 和 points[j] 确定了一条直线 + // 计算在这条直线上的点 + const count = countPointsOnLine(points[i], points[j]); + max = Math.max(max, count); + } + } + return max; + + // ********************************************* + + function countPointsOnLine([x1, y1], [x2, y2]) { + const slopeOfLine = (y1 - y2) / (x1 - x2); + let count = 2; + points.forEach(([x, y]) => { + if (x === x1 && y === y1) return + if (x === x2 && y === y2) return + // 斜率一样则说明点在线上 + const slope = (y1 - y) / (x1 - x); + if (slope === slopeOfLine) count++ + }) + return count; + } +}; +``` + +## 方法 2: 哈希表 + +### 思路 + +枚举直线无法避免,但是计算直线上的点这一步可以优化,思路如下: + +- 先确定一个点,计算当前点与剩余其他点的斜率 +- 用哈希表记录这个过程中所有出现过的斜率以及出现次数 +- 因为斜率一样的点就在同一条直线上,所以统计斜率出现次数就能知道该直线上有多少个点了 +- 难点在于斜率的记录方式,直接计算会出现精度问题,所以采取分子分母元祖的记录方式,如,`slope = y / x` 记录为字符串 `'y/x'`,记录前还需要对分式进行约分。 + +### 复杂度分析 + +- 时间复杂度:$O(N^2*logm)$,枚举直线的时间是 $O(N^2)$,计算gcd的时间是 $O(logm)$,m 是点的最大差值。 +- 空间复杂度:$O(N)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[][]} points + * @return {number} + */ +var maxPoints = function (points) { + let max = 1; + for (let i = 0; i < points.length; i++) { + // 先确定一个点 points[i] + const map = {}; + for (let j = i + 1; j < points.length; j++) { + // 枚举剩余的点,计算两点的斜率 + // 用哈希表记录所有出现过的斜率的次数 + const key = getSlopeKey(points[i], points[j]); + map[key] = (map[key] || 0) + 1; + } + const count = Math.max(...Object.values(map)) + 1; + max = Math.max(count, max); + } + return max + + // *********************************** + function getSlopeKey([x1, y1], [x2, y2]) { + const [x, y] = [x1 - x2, y1 - y2]; + const k = gcd(x, y); + return `${y / k}/${x / k}`; + } + function gcd(a, b) { + return b != 0 ? gcd(b, a % b) : a; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/extensions/1755.closest-subsequence-sum.md b/extensions/1755.closest-subsequence-sum.md new file mode 100644 index 0000000..ad369d2 --- /dev/null +++ b/extensions/1755.closest-subsequence-sum.md @@ -0,0 +1,186 @@ +# 1755. 最接近目标值的子序列和 + +https://leetcode-cn.com/problems/closest-subsequence-sum/ + +- [1755. 最接近目标值的子序列和](#1755-最接近目标值的子序列和) + - [题目描述](#题目描述) + - [方法1:暴力法](#方法1暴力法) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法2:双向搜索](#方法2双向搜索) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) + +## 题目描述 + +``` +给你一个整数数组 nums 和一个目标值 goal 。 + +你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal) 。 + +返回 abs(sum - goal) 可能的 最小值 。 + +注意,数组的子序列是通过移除原始数组中的某些元素(可能全部或无)而形成的数组。 + +  + +示例 1: + +输入:nums = [5,-7,3,5], goal = 6 +输出:0 +解释:选择整个数组作为选出的子序列,元素和为 6 。 +子序列和与目标值相等,所以绝对差为 0 。 +示例 2: + +输入:nums = [7,-9,15,-2], goal = -5 +输出:1 +解释:选出子序列 [7,-9,-2] ,元素和为 -4 。 +绝对差为 abs(-4 - (-5)) = abs(1) = 1 ,是可能的最小值。 +示例 3: + +输入:nums = [1,2,3], goal = -7 +输出:7 +  + +提示: + +1 <= nums.length <= 40 +-107 <= nums[i] <= 107 +-109 <= goal <= 109 + + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/closest-subsequence-sum +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1:暴力法 + +### 思路 + +首先尝试用最简单直接的思路来解题: + +- 枚举 `nums` 的所有子集,找到子集和最接近 `goal` 的那个 + +如果不知道怎么枚举子集可以先做下这道题 [78.子集](../medium/hot/36.subsets.md)。 + +### 复杂度分析 + +- 时间复杂度:$O(2^N)$,N 为 nums 的长度。 +- 空间复杂度:$O(N)$,N 为 nums 的长度,递归栈的深度。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} goal + * @return {number} + */ +var minAbsDifference = function(nums, goal) { + return dfs(nums, 0, 0); + + function dfs(nums, pos, sum) { + // 对 nums 的所有元素作出选择后确定了子集 + // 返回子集和与 goal 的差值 + if (pos == nums.length) return Math.abs(sum - goal); + // prune + // 0 是可能的最小差值了,没必要继续搜索 + if (sum === goal) return 0; + + // 选当前数字 + const a = dfs(nums, pos + 1, sum + nums[pos]); + // 不选当前数字 + const b = dfs(nums, pos + 1, sum); + // 目标是找到最小的差值 + return Math.min(a, b); + } +}; +``` + +## 方法2:双向搜索 + +### 思路 + + + +### 复杂度分析 + +- 时间复杂度:$O(2^m + mlogm)$,m 为 nums 长度的一半,$2^m$ 是枚举半截数组所有子集的时间,$mlogm$ 是。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @param {number} goal + * @return {number} + */ +var minAbsDifference = function (nums, goal) { + const mid = nums.length >> 1; + + // divide |nums| into two halves + // calculate sums of all possible subsets repectively + const leftSums = []; + dfs(nums, 0, mid, 0, leftSums); + const rightSums = []; + dfs(nums, mid, nums.length, 0, rightSums); + + // we need to choose one value from |leftSums| and |rightSums| respectively + // the |x| and |y| chosen should sum closest to |goal| + + // first sort |leftSums| for using binary search to find target + leftSums.sort((a, b) => a - b); + + // now iterate through |rightSums| + // for each sum |x| from |rightSums|, go find the value closest to |goal-x| in |leftSums|, let's call it |closest| + // idealy |closest| will be equal to |goal-x|, which makes the total subset sum equal to |goal| + // if not so lucky, we pick the closest |closest| over the iteration + let minDiff = Number.MAX_SAFE_INTEGER; + for (let i = 0; i < rightSums.length; i++) { + const x = rightSums[i]; + const target = goal - x; + const closest = findClosest(leftSums, target); + const diff = Math.abs(target - closest); + minDiff = Math.min(diff, minDiff) + } + return minDiff + + // ****************************************** + function dfs(nums, start, end, currentSum, bucket) { + if (start == end) { + bucket.push(currentSum); + return; + } + dfs(nums, start + 1, end, currentSum + nums[start], bucket); + dfs(nums, start + 1, end, currentSum, bucket); + } + + function findClosest(list, target) { + let l = 0, + r = list.length - 1, + m = 0; + + while (l <= r) { + m = ((r - l) >> 1) + l; + if (list[m] == target) return target + if (list[m] < target) l = m + 1 + else r = m - 1 + } + + if (l >= list.length) return list[r]; + if (r < 0) return list[l]; + + return Math.abs(list[l] - target) < Math.abs(list[r] - target) ? list[l] : list[r]; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/medium/dp/number-of-longest-increasing-subsequence.md b/medium/dp/number-of-longest-increasing-subsequence.md new file mode 100644 index 0000000..d3ef10f --- /dev/null +++ b/medium/dp/number-of-longest-increasing-subsequence.md @@ -0,0 +1,106 @@ +# 673. 最长递增子序列的个数 + +https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence/ + +## 题目描述 + +``` +给定一个未排序的整数数组,找到最长递增子序列的个数。 + +示例 1: + +输入: [1,3,5,4,7] +输出: 2 +解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。 +示例 2: + +输入: [2,2,2,2,2] +输出: 5 +解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。 +注意: 给定的数组长度不超过 2000 并且结果一定是32位有符号整数。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:动态规划 + +### 思路 + + +### 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @return {number} + */ +var findNumberOfLIS = function (nums) { + const n = nums.length; + const length = Array.from({ length: n }).fill(1); + const count = Array.from({ length: n }).fill(1); + + for (let i = 0; i < n; i++) { + for (let j = 0; j < i; j++) { + if (nums[j] >= nums[i]) continue; + + if (length[j] + 1 > length[i]) { + length[i] = length[j] + 1; + count[i] = count[j]; + } else if (length[j] + 1 == length[i]) { + count[i] += count[j]; + } + } + } + + const longest = Math.max(...length); + return length.reduce( + (cnt, len, i) => (len == longest ? cnt + count[i] : cnt), + 0 + ); +}; +``` + +C++ Code + +```cpp +class Solution { +public: + int findNumberOfLIS(vector& nums) { + int n = nums.size(); + vector length(n, 1); + vector count(n, 1); + + for (int i = 0; i < n; i++) { + for (int j = 0; j < i; j++) { + if (nums[i] <= nums[j]) continue; + + if (length[j] + 1 > length[i]) { + length[i] = length[j] + 1; + count[i] = count[j]; + } + else if (length[j] + 1 == length[i]) { + count[i] += count[j]; + } + } + } + + int longest = *max_element(length.begin(), length.end()); + int ans = 0; + for (int i = 0; i < n; i++) { + if (length[i] == longest) { + ans += count[i]; + } + } + return ans; + } +}; +``` + +### 复杂度分析 + +- 时间复杂度:$O(N^2)$。N 是数组 `nums` 的长度。 +- 空间复杂度:$O(N)$。N 是辅助数组 `length` 和 `count` 的长度。 \ No newline at end of file From 0e5748af6f9f456bc375be60beba455db77f5699 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 25 Jun 2021 09:15:37 +0800 Subject: [PATCH 35/44] =?UTF-8?q?update:=20149.=20=E7=9B=B4=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=9C=80=E5=A4=9A=E7=9A=84=E7=82=B9=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/hashmap/ext-max-points-on-a-line.md | 122 ++++++++++++---------- 1 file changed, 67 insertions(+), 55 deletions(-) diff --git a/basic/hashmap/ext-max-points-on-a-line.md b/basic/hashmap/ext-max-points-on-a-line.md index de98bf4..7e27135 100644 --- a/basic/hashmap/ext-max-points-on-a-line.md +++ b/basic/hashmap/ext-max-points-on-a-line.md @@ -3,7 +3,16 @@ https://leetcode-cn.com/problems/max-points-on-a-line/ ## 题目描述 - +- [149. 直线上最多的点数](#149-直线上最多的点数) + - [题目描述](#题目描述) + - [方法 1:枚举](#方法-1枚举) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + - [方法 2: 哈希表](#方法-2-哈希表) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码](#代码-1) ``` 给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 @@ -11,13 +20,17 @@ https://leetcode-cn.com/problems/max-points-on-a-line/ 示例 1: ``` + ![](https://assets.leetcode.com/uploads/2021/02/25/plane1.jpg) + ``` 输入:points = [[1,1],[2,2],[3,3]] 输出:3 示例 2: ``` + ![](https://assets.leetcode.com/uploads/2021/02/25/plane2.jpg) + ``` 输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出:4 @@ -51,8 +64,8 @@ points 中的所有点 互不相同 ### 复杂度分析 -- 时间复杂度:$O(N^3)$,枚举直线的时间是 $O(N^2)$,计算在直线上的点的时间是 $O(N)$。 -- 空间复杂度:$O(1)$。 +- 时间复杂度:$O(N^3)$,枚举直线的时间是 $O(N^2)$,计算在直线上的点的时间是 $O(N)$。 +- 空间复杂度:$O(1)$。 ### 代码 @@ -63,33 +76,32 @@ JavaScript Code * @param {number[][]} points * @return {number} */ -var maxPoints = function(points) { - let max = 1; - // 点两两组合,枚举所有组合 - for (let i = 0; i < points.length; i++) { - for (let j = i + 1; j < points.length; j++) { - // points[i] 和 points[j] 确定了一条直线 - // 计算在这条直线上的点 - const count = countPointsOnLine(points[i], points[j]); - max = Math.max(max, count); - } - } - return max; - - // ********************************************* - - function countPointsOnLine([x1, y1], [x2, y2]) { - const slopeOfLine = (y1 - y2) / (x1 - x2); - let count = 2; - points.forEach(([x, y]) => { - if (x === x1 && y === y1) return - if (x === x2 && y === y2) return - // 斜率一样则说明点在线上 - const slope = (y1 - y) / (x1 - x); - if (slope === slopeOfLine) count++ - }) - return count; +var maxPoints = function (points) { + let max = 1; + // 点两两组合,枚举所有组合的直线 + for (let i = 0; i < points.length; i++) { + for (let j = i + 1; j < points.length; j++) { + // points[i] 和 points[j] 确定了一条直线 + // 计算在这条直线上的点 + let count = 2; + for (let k = j + 1; k < points.length; k++) { + if (areSameLine(points[i], points[j], points[k])) count++ + } + max = Math.max(max, count); } + } + return max; + + // ********************************************* + function areSameLine([x1, y1], [x2, y2], [x3, y3]) { + if (x1 == x2 && x2 == x3) return true; + if (y1 == y2 && y2 == y3) return true; + if (x1 == x2 || x2 == x3) return false; + if (y1 == y2 || y2 == y3) return false; + const s1 = (y1 - y2) / (x1 - x2); + const s2 = (y2 - y3) / (x2 - x3); + return s1 === s2; + } }; ``` @@ -106,8 +118,8 @@ var maxPoints = function(points) { ### 复杂度分析 -- 时间复杂度:$O(N^2*logm)$,枚举直线的时间是 $O(N^2)$,计算gcd的时间是 $O(logm)$,m 是点的最大差值。 -- 空间复杂度:$O(N)$。 +- 时间复杂度:$O(N^2*logm)$,枚举直线的时间是 $O(N^2)$,计算 gcd 的时间是 $O(logm)$,m 是点的最大差值。 +- 空间复杂度:$O(N)$。 ### 代码 @@ -119,31 +131,31 @@ JavaScript Code * @return {number} */ var maxPoints = function (points) { - let max = 1; - for (let i = 0; i < points.length; i++) { - // 先确定一个点 points[i] - const map = {}; - for (let j = i + 1; j < points.length; j++) { - // 枚举剩余的点,计算两点的斜率 - // 用哈希表记录所有出现过的斜率的次数 - const key = getSlopeKey(points[i], points[j]); - map[key] = (map[key] || 0) + 1; - } - const count = Math.max(...Object.values(map)) + 1; - max = Math.max(count, max); - } - return max - - // *********************************** - function getSlopeKey([x1, y1], [x2, y2]) { - const [x, y] = [x1 - x2, y1 - y2]; - const k = gcd(x, y); - return `${y / k}/${x / k}`; - } - function gcd(a, b) { - return b != 0 ? gcd(b, a % b) : a; + let max = 1; + for (let i = 0; i < points.length; i++) { + // 先确定一个点 points[i] + const map = {}; + for (let j = i + 1; j < points.length; j++) { + // 枚举剩余的点,计算两点的斜率 + // 用哈希表记录所有出现过的斜率的次数 + const key = getSlopeKey(points[i], points[j]); + map[key] = (map[key] || 0) + 1; } + const count = Math.max(...Object.values(map)) + 1; + max = Math.max(count, max); + } + return max; + + // *********************************** + function getSlopeKey([x1, y1], [x2, y2]) { + const [x, y] = [x1 - x2, y1 - y2]; + const k = gcd(x, y); + return `${y / k}/${x / k}`; + } + function gcd(a, b) { + return b != 0 ? gcd(b, a % b) : a; + } }; ``` -更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From c680a500601639a11793a30e30f44809797c33bc Mon Sep 17 00:00:00 2001 From: suukii Date: Wed, 30 Jun 2021 14:19:47 +0800 Subject: [PATCH 36/44] =?UTF-8?q?add:=2098.=20=E9=AA=8C=E8=AF=81=E4=BA=8C?= =?UTF-8?q?=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + .../ext-validate-binary-search-tree.md | 145 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 basic/binary-tree/ext-validate-binary-search-tree.md diff --git a/README.md b/README.md index 44ee392..c7483d7 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ - [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) - [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) - [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) +- [x] [98.验证二叉搜索树](./basic/binary-tree/ext-validate-binary-search-tree.md) ### 哈希表 diff --git a/basic/binary-tree/ext-validate-binary-search-tree.md b/basic/binary-tree/ext-validate-binary-search-tree.md new file mode 100644 index 0000000..4f1d145 --- /dev/null +++ b/basic/binary-tree/ext-validate-binary-search-tree.md @@ -0,0 +1,145 @@ +# 98. 验证二叉搜索树 + +https://leetcode-cn.com/problems/validate-binary-search-tree/ + +- [98. 验证二叉搜索树](#98-验证二叉搜索树) + - [题目描述](#题目描述) + - [方法 1:递归](#方法-1递归) + - [思路](#思路) + - [复杂度](#复杂度) + - [代码](#代码) + - [方法 2:中序遍历](#方法-2中序遍历) + - [思路](#思路-1) + - [复杂度](#复杂度-1) + - [代码](#代码-1) + +## 题目描述 + +``` +给定一个二叉树,判断其是否是一个有效的二叉搜索树。 + +假设一个二叉搜索树具有如下特征: + +节点的左子树只包含小于当前节点的数。 +节点的右子树只包含大于当前节点的数。 +所有左子树和右子树自身必须也是二叉搜索树。 +示例 1: + +输入: + 2 + / \ + 1 3 +输出: true +示例 2: + +输入: + 5 + / \ + 1 4 +  / \ +  3 6 +输出: false +解释: 输入为: [5,1,4,null,null,3,6]。 +  根节点的值为 5 ,但是其右子节点值为 4 。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/validate-binary-search-tree +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:递归 + +### 思路 + +- `root`的**左子树**所有节点值必须**小于**`root.val` +- `root`的**右子树**所有节点值必须**大于**`root.val` +- 在递归时需要将 `root.val` 这个信息传递下去,作为左子树节点值的 upperBound 以及右子树节点值的 lowerBound +- 递归出口: + - 空节点 + - 不符合要求的节点(值不在 (lowerBound, upperBound) 范围内的节点) + +### 复杂度 + +- 时间复杂度: $O(N)$,N 为二叉树节点数。 +- 空间复杂度: $O(h)$,h 为二叉树高度。 + +### 代码 + +JavaScript Code + +```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 + * @return {boolean} + */ +var isValidBST = function ( + root, + lowerBound = -Infinity, + upperBound = Infinity +) { + if (!root) return true; + if (root.val <= lowerBound || root.val >= upperBound) return false; + return ( + isValidBST(root.left, lowerBound, root.val) && + isValidBST(root.right, root.val, upperBound) + ); +}; +``` + +## 方法 2:中序遍历 + +### 思路 + +二叉搜索树的中序遍历结果是一个递增数组,只需检查给定二叉树的中序遍历结果是否符合要求即可。 + +### 复杂度 + +- 时间复杂度: $O(N)$,N 为二叉树节点数。 +- 空间复杂度: $O(h)$,h 为二叉树高度。 + +### 代码 + +JavaScript Code + +```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 + * @return {boolean} + */ +var isValidBST = function(root) { + const res = []; + inorder(root); + + for (let i = 1; i < res.length; i++) { + if (res[i] <= res[i - 1]) return false; + } + return true; + + // *************** + + function inorder(root) { + if (!root) return; + inorder(root.left); + res.push(root.val); + inorder(root.right); + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From e78d44af33368dc86f65ae51cea83d468e33a5d3 Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 29 Jul 2021 22:45:32 +0800 Subject: [PATCH 37/44] Add some solution --- algorithms/greedy.md | 6 +- algorithms/string-searching.md | 82 +++++++++++++++++++++++++++ medium/prune/50.combination-sum-ii.md | 79 ++++++++++++++++++++++++++ medium/prune/51.permutations-ii.md | 69 ++++++++++++++++++++++ medium/rk-kpm/52.implement-strstr.md | 75 ++++++++++++++++++++++++ 5 files changed, 308 insertions(+), 3 deletions(-) create mode 100644 algorithms/string-searching.md create mode 100644 medium/prune/50.combination-sum-ii.md create mode 100644 medium/prune/51.permutations-ii.md create mode 100644 medium/rk-kpm/52.implement-strstr.md diff --git a/algorithms/greedy.md b/algorithms/greedy.md index fdaae02..3aaa7de 100644 --- a/algorithms/greedy.md +++ b/algorithms/greedy.md @@ -19,12 +19,12 @@ ### 分配问题 -- [455.分发饼干](https://github.com/suukii/91-days-algorithm/blob/master/topics/greedy/ext-assign-cookies.md) -- [135.分发糖果](https://github.com/suukii/91-days-algorithm/blob/master/topics/greedy/ext-candy.md) +- [455.分发饼干](../topics/greedy/ext-assign-cookies.md) +- [135.分发糖果](../topics/greedy/ext-candy.md) ### 区间问题 -- [435.无重叠区间](https://github.com/suukii/91-days-algorithm/blob/master/topics/greedy/ext-non-overlapping-intervals.md) +- [435.无重叠区间](../topics/greedy/ext-non-overlapping-intervals.md) TODO diff --git a/algorithms/string-searching.md b/algorithms/string-searching.md new file mode 100644 index 0000000..3b8d70c --- /dev/null +++ b/algorithms/string-searching.md @@ -0,0 +1,82 @@ +# 字符串匹配算法 + +在一个长字符串或文章中,找出它是否包含一个或多个模式字符串及其位置。可以应用于生物基因匹配、信息检索等。 + +## Brute Force + +数据量不大的情况下,可以使用固定长度的滑动窗口枚举长串的所有子串,逐一与模式串进行比较。 + +- 防御性编程(如模式串长度大于长串长度) +- 初始化长度为模式串长度的滑动窗口 +- 将当前窗口的子串与模式串进行比较,若匹配成功,则记录相关信息如下标等 +- 将滑动窗口后移一格 + +## Rabin-Karp (RK) + +Rabin-Karp 是用于字符串匹配的算法 + +JavaScript Code + +TODO + +```js +/** + * @param {string} haystack + * @param {string} needle + * @return {number} + */ +var strStr = function (haystack, needle) { + if (!haystack || !needle || haystack.length < needle.length) return -1; + + const n = haystack.length, + m = needle.length; + + let hash1 = initHash(haystack, 0, m); + const hash2 = initHash(needle, 0, m); + + for (let i = 0; i <= n - m; i++) { + if (i > 0 && i <= n - m) { + hash1 = rehash(haystack, hash1, i - 1, i + m - 1, m); + } + + if (hash1 === hash2 && compare(haystack, needle, i)) { + return i; + } + } + + return -1; + + // ******************************************** + function initHash(string, start, end) { + let hashVal = 0; + for (let i = start; i < end; i++) { + const c = string[i]; + hashVal += + (c.charCodeAt(0) - 'a'.charCodeAt(0)) * + Math.pow(26, end - start); + } + return hashVal; + } + + function rehash(string, hashVal, oldIdx, newIdx, patLen) { + return ( + (hashVal - + (string.charCodeAt(oldIdx) - 'a'.charCodeAt(0) + 1) * + Math.pow(26, patLen - 1)) * + 26 + + (string.charCodeAt(newIdx) - 'a'.charCodeAt(0) + 1) + ); + } + + function compare(string, pattern, start) { + for (let i = 0; i < pattern.length; i++) { + if (string[i + start] !== pattern[i]) return false; + } + return true; + } +}; + +var a = strStr('lcode', 'code'); + +console.log(a); +``` diff --git a/medium/prune/50.combination-sum-ii.md b/medium/prune/50.combination-sum-ii.md new file mode 100644 index 0000000..92138df --- /dev/null +++ b/medium/prune/50.combination-sum-ii.md @@ -0,0 +1,79 @@ +# 40. 组合总和 II + +https://leetcode-cn.com/problems/combination-sum-ii + +## 题目描述 + +``` +给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 + +candidates 中的每个数字在每个组合中只能使用一次。 + +说明: + +所有数字(包括目标数)都是正整数。 +解集不能包含重复的组合。 +示例 1: + +输入: candidates = [10,1,2,7,6,1,5], target = 8, +所求解集为: +[ +[1, 7], +[1, 2, 5], +[2, 6], +[1, 1, 6] +] +示例 2: + +输入: candidates = [2,5,2,1,2], target = 5, +所求解集为: +[ + [1,2,2], + [5] +] + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/combination-sum-ii +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 思路 + +## 复杂度分析 + +- 时间复杂度: +- 空间复杂度: + +## 代码 + +JavaScript Code + +```js +/** + * @param {number[]} candidates + * @param {number} target + * @return {number[][]} + */ +var combinationSum2 = function (candidates, target) { + const helper = (candidates, arr, remain, cur, res) => { + for (let i = cur; i < candidates.length; i++) { + if (candidates[i] > remain) continue + if (candidates[i] === candidates[i - 1] && i > cur) continue + + if (candidates[i] === remain) { + res.push([...arr, candidates[i]]) + return + } + + arr.push(candidates[i]) + helper(candidates, [...arr], remain - candidates[i], i + 1, res) + arr.pop() + } + } + + const res = [] + candidates.sort((a, b) => a - b) + helper(candidates, [], target, 0, res) + return res +} +``` diff --git a/medium/prune/51.permutations-ii.md b/medium/prune/51.permutations-ii.md new file mode 100644 index 0000000..d1aa2a9 --- /dev/null +++ b/medium/prune/51.permutations-ii.md @@ -0,0 +1,69 @@ +# 47. 全排列 II + +https://leetcode-cn.com/problems/permutations-ii + +## 题目描述 + +``` +给定一个可包含重复数字的序列,返回所有不重复的全排列。 + +示例: + +输入: [1,1,2] +输出: +[ +[1,1,2], +[1,2,1], +[2,1,1] +] + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/permutations-ii +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 + + +``` + +## 思路 + +## 复杂度分析 + +- 时间复杂度: +- 空间复杂度: + +## 代码 + +JavaScript Code + +```js +/** + * @param {number[]} nums + * @return {number[][]} + */ +var permuteUnique = function (nums) { + const backtrack = (nums, path, res, visited) => { + if (path.length === nums.length) { + res.push(path); + return; + } + + for (let i = 0; i < nums.length; i++) { + if ( + visited[i] || + (i > 0 && nums[i] === nums[i - 1] && visited[i - 1]) + ) + continue; + visited[i] = true; + path.push(nums[i]); + backtrack(nums, [...path], res, visited); + path.pop(); + visited[i] = false; + } + }; + + const res = []; + nums.sort((a, b) => a - b); + backtrack(nums, [], res, Array(nums.length)); + return res; +}; +``` diff --git a/medium/rk-kpm/52.implement-strstr.md b/medium/rk-kpm/52.implement-strstr.md new file mode 100644 index 0000000..046c8f8 --- /dev/null +++ b/medium/rk-kpm/52.implement-strstr.md @@ -0,0 +1,75 @@ +# 28. 实现 strStr() + +https://leetcode-cn.com/problems/implement-strstr/ + +## 题目描述 + +``` +实现 strStr() 函数。 + +给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。 + +示例 1: + +输入: haystack = "hello", needle = "ll" +输出: 2 +示例 2: + +输入: haystack = "aaaaa", needle = "bba" +输出: -1 +说明: + +当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 + +对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/implement-strstr +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1:暴力 + +### 思路 + +将长串的所有子串与短串进行一一对比。 + +### 复杂度分析 + +- 时间复杂度:$O(M*N)$,M 是长串的长度,N 是短串的长度。 +- 空间复杂度:$O(1)$。 + +### 代码 + +JavaScript Code + +```js +/** + * @param {string} haystack + * @param {string} needle + * @return {number} + */ +var strStr = function (haystack, needle) { + if (!needle) return 0; + + let l = 0, + r = needle.length; + if (haystack[l] === needle[0]) { + if (compare(haystack, needle, l, r)) return l; + } + l++; + r++; + } + return -1; + + // ******************************** + function compare(long, short, l, r) { + for (let i = 0; i < r - l; i++) { + if (long[i + l] !== short[i]) return false; + } + return true; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) From 9979157559cb6d0d3c58e2f741dfc104f0b2623e Mon Sep 17 00:00:00 2001 From: suukii Date: Thu, 29 Jul 2021 23:31:09 +0800 Subject: [PATCH 38/44] add: 2.add-two-numbers(cpp) --- README.md | 1 + problems/2.add-two-numbers.md | 98 +++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 problems/2.add-two-numbers.md diff --git a/README.md b/README.md index 2903e66..d2b5440 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,7 @@ #### 链表拓展题目 +- [x] [2.两数相加](./problems/2.add-two-numbers.md) - [x] [21.合并两个有序链表](./basic/linked-list/ext-merge-two-sorted-lists.md) - [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) - [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) diff --git a/problems/2.add-two-numbers.md b/problems/2.add-two-numbers.md new file mode 100644 index 0000000..73c7dbf --- /dev/null +++ b/problems/2.add-two-numbers.md @@ -0,0 +1,98 @@ +# 2. 两数相加 + +https://leetcode-cn.com/problems/add-two-numbers/ + +## 题目描述 + +``` +给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 + +请你将两个数相加,并以相同形式返回一个表示和的链表。 + +你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 + +  + +示例 1: + + +输入:l1 = [2,4,3], l2 = [5,6,4] +输出:[7,0,8] +解释:342 + 465 = 807. +示例 2: + +输入:l1 = [0], l2 = [0] +输出:[0] +示例 3: + +输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] +输出:[8,9,9,9,0,0,0,1] +  + +提示: + +每个链表中的节点数在范围 [1, 100] 内 +0 <= Node.val <= 9 +题目数据保证列表表示的数字不含前导零 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/add-two-numbers +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1: 模拟 + +### 思路 + +- 简单加法 +- 对链表数据结构有基础了解 + +### 复杂度分析 + +- 时间复杂度:$O(N)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { + ListNode* dummy = new ListNode(); + ListNode *tail = dummy, *p1 = l1, *p2 = l2; + + int carry = 0; + while (p1 || p2) { + int val1 = p1 ? p1->val : 0; + int val2 = p2 ? p2->val : 0; + + int sum = val1 + val2 + carry; + carry = sum / 10; + + tail->next = new ListNode(sum % 10); + tail = tail->next; + + if (p1) p1 = p1->next; + if (p2) p2 = p2->next; + } + if (carry > 0) { + tail->next = new ListNode(carry); + } + return dummy->next; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From c0dab0682985a7200e74cf19532fabbebcfc3c72 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 30 Jul 2021 00:12:55 +0800 Subject: [PATCH 39/44] add: 19.remove-nth-node-from-end-of-list(cpp) --- README.md | 1 + .../0019.remove-nth-node-from-end-of-list.md | 137 ++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 problems/0019.remove-nth-node-from-end-of-list.md diff --git a/README.md b/README.md index d2b5440..8962164 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ #### 链表拓展题目 - [x] [2.两数相加](./problems/2.add-two-numbers.md) +- [x] [19.删除链表的倒数第 N 个结点](./problems/0019.remove-nth-node-from-end-of-list.md) - [x] [21.合并两个有序链表](./basic/linked-list/ext-merge-two-sorted-lists.md) - [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) - [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) diff --git a/problems/0019.remove-nth-node-from-end-of-list.md b/problems/0019.remove-nth-node-from-end-of-list.md new file mode 100644 index 0000000..03f6e57 --- /dev/null +++ b/problems/0019.remove-nth-node-from-end-of-list.md @@ -0,0 +1,137 @@ +# 19. 删除链表的倒数第 N 个结点 + +https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ + +## 题目描述 + +``` +给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 + +进阶:你能尝试使用一趟扫描实现吗? + +  + +示例 1: + + +输入:head = [1,2,3,4,5], n = 2 +输出:[1,2,3,5] +示例 2: + +输入:head = [1], n = 1 +输出:[] +示例 3: + +输入:head = [1,2], n = 1 +输出:[1] +  + +提示: + +链表中结点的数目为 sz +1 <= sz <= 30 +0 <= Node.val <= 100 +1 <= n <= sz + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法1: 快慢指针 + +### 思路 + +**找到倒数第 N 个节点** + +- 要删除倒数第 N 个节点,第一步要先找到倒数第 N 个节点(实际上对于单向链表,还需要找到倒数第 N+1 个节点才能完成删除倒数第 N 个节点的操作)。 +- 简单的思路是,遍历确定链表长度 L,通过计算得到倒数第 N 个节点是顺数第 L-N 个节点。 +- 快慢指针的思路是,定义两个指针,快指针先走 N 步,剩下的路程自然是 L-N,这时再让快慢指针同时走,等快指针走路末尾时,慢指针走过的路程刚好是 L-N,也就是刚好走到倒数第 N 个节点。 + +**使用 dummy 节点来避免单独处理头节点** + +假如要删除的节点刚好是头节点的话,要额外处理就很麻烦。但如果事先在头节点前面添加一个 dummy 节点,就可以把头节点当成一个普通节点来处理了,这是链表题中常用的技巧。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$。 +- 空间复杂度:$O(1)$。 + +### 代码 + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + ListNode *fast = head, *slow = head; + while (n--) { + fast = fast->next; + } + // 额外处理头部节点 + if (!fast) { + ListNode *new_head = head->next; + head->next = nullptr; + return new_head; + } + while (fast->next) { + fast = fast->next; + slow = slow->next; + } + ListNode *target = slow->next; + slow->next = target->next; + target->next = nullptr; + return head; + } +}; +``` + +使用 dummy 节点 + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + ListNode *dummy = new ListNode(0, head); + ListNode *fast = dummy, *slow = dummy; + + // 快指针先走 n 步 + while (n-- > 0) { + fast = fast->next; + } + // 当快指针走到尾节点时 + // 慢指针刚好走到倒数 n+1 个节点 + while (fast && fast->next) { + fast = fast->next; + slow = slow->next; + } + ListNode *target = slow->next; + slow->next = target->next; + target->next = nullptr; + return dummy->next; + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 4e23c3d0b4bc833dd9825a2d3cf55540410c9675 Mon Sep 17 00:00:00 2001 From: suukii Date: Fri, 30 Jul 2021 07:53:27 +0800 Subject: [PATCH 40/44] add cpp: 21.merge-two-sorted-lists --- README.md | 2 +- .../linked-list/ext-merge-two-sorted-lists.md | 116 ---------- .../0019.remove-nth-node-from-end-of-list.md | 7 + problems/0021.merge-two-sorted-lists.md | 203 ++++++++++++++++++ problems/2.add-two-numbers.md | 7 + 5 files changed, 218 insertions(+), 117 deletions(-) delete mode 100644 basic/linked-list/ext-merge-two-sorted-lists.md create mode 100644 problems/0021.merge-two-sorted-lists.md diff --git a/README.md b/README.md index 06dccf2..c369239 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ - [x] [2.两数相加](./problems/2.add-two-numbers.md) - [x] [19.删除链表的倒数第 N 个结点](./problems/0019.remove-nth-node-from-end-of-list.md) -- [x] [21.合并两个有序链表](./basic/linked-list/ext-merge-two-sorted-lists.md) +- [x] [21.合并两个有序链表](./problems/0021.merge-two-sorted-lists.md) - [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) - [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) diff --git a/basic/linked-list/ext-merge-two-sorted-lists.md b/basic/linked-list/ext-merge-two-sorted-lists.md deleted file mode 100644 index 3203579..0000000 --- a/basic/linked-list/ext-merge-two-sorted-lists.md +++ /dev/null @@ -1,116 +0,0 @@ -# 21. 合并两个有序链表 - -https://leetcode-cn.com/problems/merge-two-sorted-lists/ - -## 题目描述 - -``` -将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  - -示例: - -输入:1->2->4, 1->3->4 -输出:1->1->2->3->4->4 - -来源:力扣(LeetCode) -链接:https://leetcode-cn.com/problems/merge-two-sorted-lists -著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -``` - -## 方法 1: 迭代 - -### 思路 - -- 用两个指针分别遍历两个链表,比较两个指针节点的大小。 - - 将较小的那个节点加到新链表中,然后指针后移。 - - 较大的那个节点指针不动,下一轮继续比较。 -- 如果两个链表长度不一样,继续遍历将多出来的节点加到新链表中就好了。 - -### 复杂度分析 - -- 时间复杂度:$O(N)$, N 为链表长度。 -- 空间复杂度:$O(1)$。 - -### 代码 - -JavaScript Code - -```js -/** - * Definition for singly-linked list. - * function ListNode(val, next) { - * this.val = (val===undefined ? 0 : val) - * this.next = (next===undefined ? null : next) - * } - */ -/** - * @param {ListNode} l1 - * @param {ListNode} l2 - * @return {ListNode} - */ -var mergeTwoLists = function (l1, l2) { - const dummy = new ListNode(); - let p1 = l1, - p2 = l2, - cur = dummy; - - while (p1 || p2) { - if (!p2 || (p1 && p1.val <= p2.val)) { - cur.next = new ListNode(p1.val); - p1 = p1.next; - } else { - cur.next = new ListNode(p2.val); - p2 = p2.next; - } - cur = cur.next; - } - - return dummy.next; -}; -``` - -## 方法 2: 递归 - -### 思路 - -- 如果 `l1 < l2`,那就把 l1 作为合并链表的头部返回,然后继续合并 `l1.next` 和 `l2` 之后的节点。 -- 如果 `l2 < l1`,那就把 l2 作为合并链表的头部返回,然后继续合并 `l2.next` 和 `l1` 之后的节点。 -- 递归出口: - - 没有节点了。 - - 只剩一个节点,不用比较,返回那个节点就行。 - -### 复杂度分析 - -- 时间复杂度:$O(N)$, N 为链表长度。 -- 空间复杂度:$O(N)$, N 为链表长度,递归栈的空间。 - -### 代码 - -JavaScript Code - -```js -/** - * Definition for singly-linked list. - * function ListNode(val, next) { - * this.val = (val===undefined ? 0 : val) - * this.next = (next===undefined ? null : next) - * } - */ -/** - * @param {ListNode} l1 - * @param {ListNode} l2 - * @return {ListNode} - */ -var mergeTwoLists = function (l1, l2) { - if (!l1) return l2; - if (!l2) return l1; - - if (l1.val < l2.val) { - l1.next = mergeTwoLists(l1.next, l2); - return l1; - } else { - l2.next = mergeTwoLists(l1, l2.next); - return l2; - } -}; -``` diff --git a/problems/0019.remove-nth-node-from-end-of-list.md b/problems/0019.remove-nth-node-from-end-of-list.md index 03f6e57..f73cb62 100644 --- a/problems/0019.remove-nth-node-from-end-of-list.md +++ b/problems/0019.remove-nth-node-from-end-of-list.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ +- [19. 删除链表的倒数第 N 个结点](#19-删除链表的倒数第-n-个结点) + - [题目描述](#题目描述) + - [方法1: 快慢指针](#方法1-快慢指针) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + ## 题目描述 ``` diff --git a/problems/0021.merge-two-sorted-lists.md b/problems/0021.merge-two-sorted-lists.md new file mode 100644 index 0000000..d73b5ef --- /dev/null +++ b/problems/0021.merge-two-sorted-lists.md @@ -0,0 +1,203 @@ +# 21. 合并两个有序链表 + +https://leetcode-cn.com/problems/merge-two-sorted-lists/ + +- [21. 合并两个有序链表](#21-合并两个有序链表) + - [题目描述](#题目描述) + - [方法 1: 迭代](#方法-1-迭代) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码(JavaScript/C++)](#代码javascriptc) + - [方法 2: 递归](#方法-2-递归) + - [思路](#思路-1) + - [复杂度分析](#复杂度分析-1) + - [代码(JavaScript/C++)](#代码javascriptc-1) + +## 题目描述 + +``` +将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  + +示例: + +输入:1->2->4, 1->3->4 +输出:1->1->2->3->4->4 + +来源:力扣(LeetCode) +链接:https://leetcode-cn.com/problems/merge-two-sorted-lists +著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 +``` + +## 方法 1: 迭代 + +### 思路 + +- 用两个指针分别遍历两个链表,比较两个指针节点的大小。 + - 将较小的那个节点加到新链表中,然后指针后移。 + - 较大的那个节点指针不动,下一轮继续比较。 +- 如果两个链表长度不一样,继续遍历将多出来的节点加到新链表中就好了。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$, N 为新链表长度。 +- 空间复杂度:$O(1)$。 + +### 代码(JavaScript/C++) + +JavaScript Code + +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode} l1 + * @param {ListNode} l2 + * @return {ListNode} + */ +var mergeTwoLists = function (l1, l2) { + const dummy = new ListNode(); + let p1 = l1, + p2 = l2, + cur = dummy; + + while (p1 || p2) { + if (!p2 || (p1 && p1.val <= p2.val)) { + cur.next = new ListNode(p1.val); + p1 = p1.next; + } else { + cur.next = new ListNode(p2.val); + p2 = p2.next; + } + cur = cur.next; + } + + return dummy.next; +}; +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + ListNode *dummy = new ListNode(0); + ListNode *tail = dummy; + + while (l1 && l2) { + if (l1->val <= l2->val) { + tail->next = new ListNode(l1->val); + l1 = l1->next; + } else { + tail->next = new ListNode(l2->val); + l2 = l2->next; + } + tail = tail->next; + } + while (l1) { + tail->next = new ListNode(l1->val); + l1 = l1->next; + tail = tail->next; + } + while (l2) { + tail->next = new ListNode(l2->val); + l2 = l2->next; + tail = tail->next; + } + return dummy->next; + } +}; +``` + +## 方法 2: 递归 + +### 思路 + +- 如果 `l1.val < l2.val`,那就把 l1 作为合并链表的头部返回,然后继续合并 `l1.next` 和 `l2` 之后的节点。 +- 如果 `l1.val > l2.val`,那就把 l2 作为合并链表的头部返回,然后继续合并 `l2.next` 和 `l1` 之后的节点。 +- 递归出口: + - 没有节点了。 + - 只剩一个节点,直接返回。 + +### 复杂度分析 + +- 时间复杂度:$O(N)$, N 为新链表长度。 +- 空间复杂度:$O(N)$, N 为新链表长度,递归栈的空间。 + +### 代码(JavaScript/C++) + +JavaScript Code + +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode} l1 + * @param {ListNode} l2 + * @return {ListNode} + */ +var mergeTwoLists = function (l1, l2) { + if (!l1) return l2; + if (!l2) return l1; + + if (l1.val < l2.val) { + l1.next = mergeTwoLists(l1.next, l2); + return l1; + } else { + l2.next = mergeTwoLists(l1, l2.next); + return l2; + } +}; +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + if (!l1) return l2; + if (!l2) return l1; + + if (l1->val < l2->val) { + l1->next = mergeTwoLists(l1->next, l2); + return l1; + } else { + l2->next = mergeTwoLists(l1, l2->next); + return l2; + } + } +}; +``` + +更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file diff --git a/problems/2.add-two-numbers.md b/problems/2.add-two-numbers.md index 73c7dbf..df2901f 100644 --- a/problems/2.add-two-numbers.md +++ b/problems/2.add-two-numbers.md @@ -2,6 +2,13 @@ https://leetcode-cn.com/problems/add-two-numbers/ +- [2. 两数相加](#2-两数相加) + - [题目描述](#题目描述) + - [方法1: 模拟](#方法1-模拟) + - [思路](#思路) + - [复杂度分析](#复杂度分析) + - [代码](#代码) + ## 题目描述 ``` From 8f1d2cab6825428a3b600616be7c33c07b2da891 Mon Sep 17 00:00:00 2001 From: suukii <30331289+suukii@users.noreply.github.com> Date: Fri, 30 Jul 2021 09:57:01 +0800 Subject: [PATCH 41/44] Update README.md --- README.md | 380 ++++++++++++++++++++++++------------------------------ 1 file changed, 170 insertions(+), 210 deletions(-) diff --git a/README.md b/README.md index c369239..ddf962b 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,15 @@ # LeetCode 题解 -- [LeetCode 题解](#leetcode-题解) - - [基础篇](#基础篇) - - [数组,栈,队列](#数组栈队列) - - [每日一题](#每日一题) - - [数组拓展题目](#数组拓展题目) - - [栈拓展题目](#栈拓展题目) - - [队列拓展题目](#队列拓展题目) - - [相关专题](#相关专题) - - [链表](#链表) - - [每日一题](#每日一题-1) - - [链表拓展题目](#链表拓展题目) - - [树](#树) - - [每日一题](#每日一题-2) - - [树拓展题目](#树拓展题目) - - [哈希表](#哈希表) - - [每日一题](#每日一题-3) - - [哈希表拓展题目](#哈希表拓展题目) - - [双指针](#双指针) - - [每日一题](#每日一题-4) - - [双指针拓展题目](#双指针拓展题目) - - [进阶篇](#进阶篇) - - [高频面试题](#高频面试题) - - [前缀树](#前缀树) - - [并查集](#并查集) - - [每日一题](#每日一题-5) - - [拓展](#拓展) - - [跳表](#跳表) - - [剪枝](#剪枝) - - [每日一题](#每日一题-6) - - [字符串匹配](#字符串匹配) - - [每日一题](#每日一题-7) - - [拓展题目](#拓展题目) - - [堆](#堆) - - [每日一题](#每日一题-8) - - [专题篇](#专题篇) - - [二分法](#二分法) - - [每日一题](#每日一题-9) - - [拓展题目](#拓展题目-1) - - [滑动窗口](#滑动窗口) - - [每日一题](#每日一题-10) - - [拓展题目](#拓展题目-2) - - [位运算](#位运算) - - [搜索(BFS, DFS, 回溯)](#搜索bfs-dfs-回溯) - - [背包问题](#背包问题) - - [动态规划](#动态规划) - - [分治](#分治) - - [贪心](#贪心) - - [每日一题](#每日一题-11) - - [贪心拓展题目](#贪心拓展题目) - - [其他](#其他) - -> [在线电子书](https://app.gitbook.com/@suki/s/91-days-algorithm/) -> -> [笔记](https://github.com/suukii/Articles#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%AE%97%E6%B3%95) +| 基础篇 | 进阶篇 | 专题篇 | +| --------------------------- | ------------------------- | --------------------------------------- | +| [数组/栈/队列](#数组栈队列) | [高频面试题](#高频面试题) | [二分法](#二分法) | +| [链表](#链表) | [前缀树](#前缀树) | [滑动窗口](#滑动窗口) | +| [树](#树) | [并查集](#并查集) | [位运算](#位运算) | +| [哈希表](#哈希表) | [跳表](#跳表) | [搜索(BFS/DFS/回溯)](#搜索bfs-dfs-回溯) | +| [双指针](#双指针) | [剪枝](#剪枝) | [背包问题](#背包问题) | +| - | [字符串匹配](#字符串匹配) | [动态规划](#动态规划) | +| - | [堆](#堆) | [分治](#分治) | +| - | - | [贪心](#贪心) | ## 基础篇 @@ -61,114 +17,114 @@ #### 每日一题 -- [x] [【day-01】66.加一](./basic/array-stack-queue/01.plus-one.md) -- [x] [【day-02】821.字符的最短距离](./basic/array-stack-queue/02.shortest-distance-to-a-character.md) -- [x] [【day-03】1381.设计一个支持增量操作的栈](./basic/array-stack-queue/03.design-a-stack-with-increment-operation.md) -- [x] [【day-04】394.字符串解码](./basic/array-stack-queue/04.decode-string.md) -- [x] [【day-05】232.用栈实现队列](./basic/array-stack-queue/05.implement-queue-using-stacks.md) -- [x] [【day-06】768.最多能完成排序的块 II](./basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md) +- [x] [【day-01】66.加一](./basic/array-stack-queue/01.plus-one.md) +- [x] [【day-02】821.字符的最短距离](./basic/array-stack-queue/02.shortest-distance-to-a-character.md) +- [x] [【day-03】1381.设计一个支持增量操作的栈](./basic/array-stack-queue/03.design-a-stack-with-increment-operation.md) +- [x] [【day-04】394.字符串解码](./basic/array-stack-queue/04.decode-string.md) +- [x] [【day-05】232.用栈实现队列](./basic/array-stack-queue/05.implement-queue-using-stacks.md) +- [x] [【day-06】768.最多能完成排序的块 II](./basic/array-stack-queue/06.max-chunks-to-make-sorted-ii.md) #### 数组拓展题目 -- [x] [75.颜色分类](./basic/array-stack-queue/ext-sort-colors.md) -- [x] [28.实现 strStr()](./basic/array-stack-queue/ext-implement-strstr.md) -- [x] [380.常数时间插入、删除和获取随机元素](./basic/array-stack-queue/ext-insert-delete-getrandom-o1.md) -- [x] [189.旋转数组](./basic/array-stack-queue/ext-rotate-array.md) -- [ ] [59. 螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/) -- [ ] [859. 亲密字符串](https://leetcode-cn.com/problems/buddy-strings/) +- [x] [75.颜色分类](./basic/array-stack-queue/ext-sort-colors.md) +- [x] [28.实现 strStr()](./basic/array-stack-queue/ext-implement-strstr.md) +- [x] [380.常数时间插入、删除和获取随机元素](./basic/array-stack-queue/ext-insert-delete-getrandom-o1.md) +- [x] [189.旋转数组](./basic/array-stack-queue/ext-rotate-array.md) +- [ ] [59. 螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/) +- [ ] [859. 亲密字符串](https://leetcode-cn.com/problems/buddy-strings/) #### 栈拓展题目 -- [ ] [946. 验证栈序列](https://leetcode-cn.com/problems/validate-stack-sequences/) +- [ ] [946. 验证栈序列](https://leetcode-cn.com/problems/validate-stack-sequences/) #### 队列拓展题目 -- [ ] [155.最小栈](https://leetcode-cn.com/problems/min-stack/) -- [ ] [更多](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%8E%A8%E8%8D%90%E9%A2%98%E7%9B%AE) +- [ ] [155.最小栈](https://leetcode-cn.com/problems/min-stack/) +- [ ] [更多](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%8E%A8%E8%8D%90%E9%A2%98%E7%9B%AE) #### 相关专题 -- [ ] [前缀和](https://lucifer.ren/blog/2020/09/27/atMostK/) -- [ ] [单调栈](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%8D%95%E8%B0%83%E6%A0%88) -- [ ] [栈匹配](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%A0%88%E5%8C%B9%E9%85%8D) -- [ ] [分桶](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%88%86%E6%A1%B6) -- [ ] [链表反转](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC) +- [ ] [前缀和](https://lucifer.ren/blog/2020/09/27/atMostK/) +- [ ] [单调栈](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%8D%95%E8%B0%83%E6%A0%88) +- [ ] [栈匹配](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E6%A0%88%E5%8C%B9%E9%85%8D) +- [ ] [分桶](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E5%88%86%E6%A1%B6) +- [ ] [链表反转](https://github.com/leetcode-pp/91alg-2/blob/master/lecture/basic-01.md#%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC) ### 链表 #### 每日一题 -- [x] [【day-07】24.两两交换链表中的节点](./basic/linked-list/07.swap-nodes-in-pairs.md) -- [ ] [【day-08】61.旋转链表](./basic/linked-list/08.rotate-list.md) -- [ ] [【day-09】109.有序链表转换二叉搜索树](./basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md) -- [x] [【day-10】160.相交链表](./basic/linked-list/10.intersection-of-two-linked-lists.md) -- [x] [【day-11】142.环形链表 II](./basic/linked-list/11.linked-list-cycle-ii.md) -- [x] [【day-12】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) +- [x] [【day-07】24.两两交换链表中的节点](./basic/linked-list/07.swap-nodes-in-pairs.md) +- [ ] [【day-08】61.旋转链表](./basic/linked-list/08.rotate-list.md) +- [ ] [【day-09】109.有序链表转换二叉搜索树](./basic/linked-list/09.convert-sorted-list-to-binary-search-tree.md) +- [x] [【day-10】160.相交链表](./basic/linked-list/10.intersection-of-two-linked-lists.md) +- [x] [【day-11】142.环形链表 II](./basic/linked-list/11.linked-list-cycle-ii.md) +- [x] [【day-12】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) #### 链表拓展题目 -- [x] [2.两数相加](./problems/2.add-two-numbers.md) -- [x] [19.删除链表的倒数第 N 个结点](./problems/0019.remove-nth-node-from-end-of-list.md) -- [x] [21.合并两个有序链表](./problems/0021.merge-two-sorted-lists.md) -- [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) -- [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) +- [x] [2.两数相加](./problems/2.add-two-numbers.md) +- [x] [19.删除链表的倒数第 N 个结点](./problems/0019.remove-nth-node-from-end-of-list.md) +- [x] [21.合并两个有序链表](./problems/0021.merge-two-sorted-lists.md) +- [x] [83.删除排序链表中的重复元素](./basic/linked-list/ext-remove-duplicates-from-sorted-list.md) +- [x] [206.反转链表](./basic/linked-list/ext-reverse-linked-list.md) ### 树 #### 每日一题 -- [x] [【day-13】104.二叉树的最大深度](./basic/binary-tree/13.maximum-depth-of-binary-tree.md) -- [x] [【day-14】100.相同的树](./basic/binary-tree/14.same-tree.md) -- [x] [【day-15】129.求根到叶子节点数字之和](./basic/binary-tree/15.sum-root-to-leaf-numbers.md) -- [x] [【day-16】513.找树左下角的值](./basic/binary-tree/16.find-bottom-left-tree-value.md) -- [x] [【day-17】297.二叉树的序列化与反序列化](./basic/binary-tree/17.serialize-and-deserialize-binary-tree.md) -- [x] [【day-18】987.二叉树的垂序遍历](./basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md) +- [x] [【day-13】104.二叉树的最大深度](./basic/binary-tree/13.maximum-depth-of-binary-tree.md) +- [x] [【day-14】100.相同的树](./basic/binary-tree/14.same-tree.md) +- [x] [【day-15】129.求根到叶子节点数字之和](./basic/binary-tree/15.sum-root-to-leaf-numbers.md) +- [x] [【day-16】513.找树左下角的值](./basic/binary-tree/16.find-bottom-left-tree-value.md) +- [x] [【day-17】297.二叉树的序列化与反序列化](./basic/binary-tree/17.serialize-and-deserialize-binary-tree.md) +- [x] [【day-18】987.二叉树的垂序遍历](./basic/binary-tree/18.vertical-order-traversal-of-a-binary-tree.md) #### 树拓展题目 -- [x] [105.从前序与中序遍历序列构造二叉树](./basic/binary-tree/ext-construct-binary-tree-from-preorder-and-inorder-traversal.md) -- [x] [404.左叶子之和](./basic/binary-tree/ext-sum-of-left-leaves.md) -- [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) -- [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) -- [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) -- [x] [98.验证二叉搜索树](./basic/binary-tree/ext-validate-binary-search-tree.md) +- [x] [105.从前序与中序遍历序列构造二叉树](./basic/binary-tree/ext-construct-binary-tree-from-preorder-and-inorder-traversal.md) +- [x] [404.左叶子之和](./basic/binary-tree/ext-sum-of-left-leaves.md) +- [x] [257.二叉树的所有路径](./basic/binary-tree/ext-binary-tree-paths.md) +- [x] [112.路径总和](./basic/binary-tree/ext-path-sum.md) +- [x] [543.二叉树的直径](./basic/binary-tree/ext-diameter-of-binary-tree.md) +- [x] [98.验证二叉搜索树](./basic/binary-tree/ext-validate-binary-search-tree.md) ### 哈希表 #### 每日一题 -- [x] [【day-19】1.两数之和](./basic/hashmap/19.two-sum.md) -- [x] [【day-20】347.前 K 个高频元素](./basic/hashmap/20.top-k-frequent-elements.md) -- [x] [【day-21】447.回旋镖的数量](./basic/hashmap/21.number-of-boomerangs.md) -- [x] [【day-22】3.无重复字符的最长子串](./basic/hashmap/22.longest-substring-without-repeating-characters.md) -- [x] [【day-23】30.串联所有单词的子串](./basic/hashmap/23.substring-with-concatenation-of-all-words.md) -- [x] [【day-24】37.解数独](./basic/hashmap/24.sudoku-solver.md) +- [x] [【day-19】1.两数之和](./basic/hashmap/19.two-sum.md) +- [x] [【day-20】347.前 K 个高频元素](./basic/hashmap/20.top-k-frequent-elements.md) +- [x] [【day-21】447.回旋镖的数量](./basic/hashmap/21.number-of-boomerangs.md) +- [x] [【day-22】3.无重复字符的最长子串](./basic/hashmap/22.longest-substring-without-repeating-characters.md) +- [x] [【day-23】30.串联所有单词的子串](./basic/hashmap/23.substring-with-concatenation-of-all-words.md) +- [x] [【day-24】37.解数独](./basic/hashmap/24.sudoku-solver.md) #### 哈希表拓展题目 -- [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) -- [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) -- [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) -- [x] [149.直线上最多的点数](./basic/hashmap/ext-max-points-on-a-line.md) +- [x] [645.错误的集合](./basic/hashmap/ext-set-mismatch.md) +- [x] [面试题 04.01.节点间通路](./basic/hashmap/ext-route-between-nodes-lcci.md) +- [ ] [36.有效的数独](https://leetcode-cn.com/problems/valid-sudoku) +- [x] [149.直线上最多的点数](./basic/hashmap/ext-max-points-on-a-line.md) ### 双指针 #### 每日一题 -- [x] [【day-25】35.搜索插入位置](./basic/two-pointers/25.search-insert-position.md) -- [x] [【day-26】74.搜索二维矩阵](./basic/two-pointers/26.search-a-2d-matrix.md) -- [x] [【day-27】26.删除排序数组中的重复项](./basic/two-pointers/27.remove-duplicates-from-sorted-array.md) -- [x] [【day-28】876.链表的中间结点](./basic/two-pointers/28.middle-of-the-linked-list.md) -- [x] [【day-29】1052.爱生气的书店老板](./basic/two-pointers/29.grumpy-bookstore-owner.md) -- [x] [【day-30】239.滑动窗口最大值](./basic/two-pointers/30.sliding-window-maximum.md) +- [x] [【day-25】35.搜索插入位置](./basic/two-pointers/25.search-insert-position.md) +- [x] [【day-26】74.搜索二维矩阵](./basic/two-pointers/26.search-a-2d-matrix.md) +- [x] [【day-27】26.删除排序数组中的重复项](./basic/two-pointers/27.remove-duplicates-from-sorted-array.md) +- [x] [【day-28】876.链表的中间结点](./basic/two-pointers/28.middle-of-the-linked-list.md) +- [x] [【day-29】1052.爱生气的书店老板](./basic/two-pointers/29.grumpy-bookstore-owner.md) +- [x] [【day-30】239.滑动窗口最大值](./basic/two-pointers/30.sliding-window-maximum.md) #### 双指针拓展题目 -- [x] [875.爱吃香蕉的珂珂](./basic/two-pointers/ext-koko-eating-bananas.md) -- [x] [167.两数之和 II - 输入有序数组](./basic/two-pointers/ext-two-sum-ii-input-array-is-sorted.md) -- [x] [42.接雨水](./basic/two-pointers/ext-trapping-rain-water.md) -- [x] [面试题 17.11.单词距离](./basic/two-pointers/ext-find-closest-lcci.md) -- [ ] [11.盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water) +- [x] [875.爱吃香蕉的珂珂](./basic/two-pointers/ext-koko-eating-bananas.md) +- [x] [167.两数之和 II - 输入有序数组](./basic/two-pointers/ext-two-sum-ii-input-array-is-sorted.md) +- [x] [42.接雨水](./basic/two-pointers/ext-trapping-rain-water.md) +- [x] [面试题 17.11.单词距离](./basic/two-pointers/ext-find-closest-lcci.md) +- [ ] [11.盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water) ## 进阶篇 @@ -176,107 +132,107 @@ **二叉树遍历系列** -- [x] [【day-34】二叉树遍历系列](./medium/hot/34.traversal-of-binary-tree.md) +- [x] [【day-34】二叉树遍历系列](./medium/hot/34.traversal-of-binary-tree.md) **反转链表系列** -- [x] [【day-35】206.反转链表](./medium/hot/35.reverse-linked-list.md) -- [x] [【day-35】92.反转链表 II](./medium/hot/35.reverse-linked-list-ii.md) -- [x] [【day-35】25.K 个一组翻转链表](./medium/hot/35.reverse-nodes-in-k-group.md) +- [x] [【day-35】206.反转链表](./medium/hot/35.reverse-linked-list.md) +- [x] [【day-35】92.反转链表 II](./medium/hot/35.reverse-linked-list-ii.md) +- [x] [【day-35】25.K 个一组翻转链表](./medium/hot/35.reverse-nodes-in-k-group.md) **位运算系列** -- [ ] [【day-36】78.子集](./medium/hot/36.subsets.md) +- [ ] [【day-36】78.子集](./medium/hot/36.subsets.md) **动态规划系列** -- [x] [【day-37】62.不同路径](./medium/hot/37.unique-paths.md) -- [x] [673. 最长递增子序列的个数](./medium/dp/number-of-longest-increasing-subsequence.md) -- [ ] [70. 爬楼梯](./) -- [ ] [121. 买卖股票的最佳时机](./) -- [ ] [122. 买卖股票的最佳时机 II](./) -- [ ] [123. 买卖股票的最佳时机 III](./) -- [ ] [188. 买卖股票的最佳时机 IV](./) -- [ ] [309. 最佳买卖股票时机含冷冻期](./) -- [ ] [714. 买卖股票的最佳时机含手续费](./) +- [x] [【day-37】62.不同路径](./medium/hot/37.unique-paths.md) +- [x] [673. 最长递增子序列的个数](./medium/dp/number-of-longest-increasing-subsequence.md) +- [ ] [70. 爬楼梯](./) +- [ ] [121. 买卖股票的最佳时机](./) +- [ ] [122. 买卖股票的最佳时机 II](./) +- [ ] [123. 买卖股票的最佳时机 III](./) +- [ ] [188. 买卖股票的最佳时机 IV](./) +- [ ] [309. 最佳买卖股票时机含冷冻期](./) +- [ ] [714. 买卖股票的最佳时机含手续费](./) **有效括号系列** -- [x] [【day-38】20.有效括号](./medium/hot/38.valid-parentheses.md) -- [x] [【day-38】32.最长有效括号](./medium/hot/38.longest-valid-parentheses.md) +- [x] [【day-38】20.有效括号](./medium/hot/38.valid-parentheses.md) +- [x] [【day-38】32.最长有效括号](./medium/hot/38.longest-valid-parentheses.md) **设计系列** -- [ ] [【day-39】剑指 Offer09.用两个栈实现队列](./) -- [ ] [【day-39】641.设计循环双端队列](./) -- [x] [【day-39】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) -- [ ] [【day-39】1206.设计跳表](./) +- [ ] [【day-39】剑指 Offer09.用两个栈实现队列](./) +- [ ] [【day-39】641.设计循环双端队列](./) +- [x] [【day-39】146.LRU 缓存机制](./basic/linked-list/12.lru-cache.md) +- [ ] [【day-39】1206.设计跳表](./) **前缀和系列** -- [x] [【day-40】网易面试题](./medium/hot/40.netease.md) -- [x] [【day-40】560.和为 K 的子数组](./medium/hot/40.subarray-sum-equals-k.md) -- [x] [【day-40】1371.每个元音包含偶数次的最长子字符串](./medium/hot/40.find-the-longest-substring-containing-vowels-in-even-counts.md) +- [x] [【day-40】网易面试题](./medium/hot/40.netease.md) +- [x] [【day-40】560.和为 K 的子数组](./medium/hot/40.subarray-sum-equals-k.md) +- [x] [【day-40】1371.每个元音包含偶数次的最长子字符串](./medium/hot/40.find-the-longest-substring-containing-vowels-in-even-counts.md) ### 前缀树 -- [x] [【day-41】208.实现 Trie](./medium/trie/41.implement-trie-prefix-tree.md) -- [x] [【day-42】677.键值映射](./medium/trie/42.map-sum-pairs.md) -- [x] [【day-43】面试题 17.17.多次搜索](./medium/trie/43.multi-search-lcci.md) +- [x] [【day-41】208.实现 Trie](./medium/trie/41.implement-trie-prefix-tree.md) +- [x] [【day-42】677.键值映射](./medium/trie/42.map-sum-pairs.md) +- [x] [【day-43】面试题 17.17.多次搜索](./medium/trie/43.multi-search-lcci.md) ### 并查集 #### 每日一题 -- [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) -- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) -- [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) +- [x] [【day-44】547.朋友圈](./medium/union-find/44.friend-circles.md) +- [x] [【day-45】924.尽量减少恶意软件的传播](./medium/union-find/45.minimize-malware-spread.md) +- [x] [【day-46】1319.连通网络的操作次数](./medium/union-find/46.number-of-operations-to-make-network-connected.md) #### 拓展 -- [x] [1202.交换字符串中的元素](./medium/union-find/ext-smallest-string-with-swaps.md) +- [x] [1202.交换字符串中的元素](./medium/union-find/ext-smallest-string-with-swaps.md) ### 跳表 -- [ ] [【day-47】1206.设计跳表](./) +- [ ] [【day-47】1206.设计跳表](./) ### 剪枝 #### 每日一题 -- [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) -- [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) -- [x] [【day-50】40.组合总和 II](./medium/prune/50.combination-sum-ii.md) -- [ ] [【day-51】47.全排列 II](./medium/prune/51.permutations-ii.md) +- [x] [【day-48】814.二叉树剪枝](./medium/prune/48.binary-tree-pruning.md) +- [x] [【day-49】39.组合总和](./medium/prune/49.combination-sum.md) +- [x] [【day-50】40.组合总和 II](./medium/prune/50.combination-sum-ii.md) +- [ ] [【day-51】47.全排列 II](./medium/prune/51.permutations-ii.md) ### 字符串匹配 #### 每日一题 -- [ ] [【day-52】28.实现 strStr()](./medium/rk-kpm/52.implement-strstr.md) +- [ ] [【day-52】28.实现 strStr()](./medium/rk-kpm/52.implement-strstr.md) #### 拓展题目 -- [ ] [1371.每个元音包含偶数次的最长子字符串](./medium/day-52.md) -- [ ] [面试题 17.13.恢复空格](./medium/day-53.md) -- [ ] [1316.不同的循环子字符串](./) -- [ ] [215.数组中的第 K 个最大元素](./) -- [ ] [451.根据字符出现频率排序](./) -- [ ] [295.数据流的中位数](./) -- [ ] [378.有序矩阵中第 K 小的元素](./) -- [ ] [1054.距离相等的条形码](./) -- [ ] [面试题 17.09.第 k 个数](./) +- [ ] [1371.每个元音包含偶数次的最长子字符串](./medium/day-52.md) +- [ ] [面试题 17.13.恢复空格](./medium/day-53.md) +- [ ] [1316.不同的循环子字符串](./) +- [ ] [215.数组中的第 K 个最大元素](./) +- [ ] [451.根据字符出现频率排序](./) +- [ ] [295.数据流的中位数](./) +- [ ] [378.有序矩阵中第 K 小的元素](./) +- [ ] [1054.距离相等的条形码](./) +- [ ] [面试题 17.09.第 k 个数](./) ### 堆 #### 每日一题 -- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) -- [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) -- [x] [【day-56】23.合并 K 个升序链表](./medium/heap/56.merge-k-sorted-lists.md) -- [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) -- [x] [【day-58】378.有序矩阵中第 K 小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) -- [x] [【day-59】1054.距离相等的条形码](./medium/heap/59.distant-barcodes.md) +- [x] [【day-54】215.数组中的第 K 个最大元素](./medium/heap/54.kth-largest-element-in-an-array.md) +- [x] [【day-55】1046.最后一块石头的重量](./medium/heap/55.last-stone-weight.md) +- [x] [【day-56】23.合并 K 个升序链表](./medium/heap/56.merge-k-sorted-lists.md) +- [x] [【day-57】451.根据字符出现频率排序](./medium/heap/57.sort-characters-by-frequency.md) +- [x] [【day-58】378.有序矩阵中第 K 小的元素](./medium/heap/58.kth-smallest-element-in-a-sorted-matrix.md) +- [x] [【day-59】1054.距离相等的条形码](./medium/heap/59.distant-barcodes.md) ## 专题篇 @@ -284,82 +240,86 @@ #### 每日一题 -- [x] [【day-61】69.x 的平方根](./topics/binary-search/61.sqrtx.md) -- [x] [【day-62】278.第一个错误的版本](./topics/binary-search/62.first-bad-version.md) -- [x] [【day-63】162.寻找峰值](./topics/binary-search/63.find-peak-element.md) +- [x] [【day-61】69.x 的平方根](./topics/binary-search/61.sqrtx.md) +- [x] [【day-62】278.第一个错误的版本](./topics/binary-search/62.first-bad-version.md) +- [x] [【day-63】162.寻找峰值](./topics/binary-search/63.find-peak-element.md) #### 拓展题目 -- [x] [33.搜索旋转排序数组](./topics/binary-search/ext-search-in-rotated-sorted-array.md) -- [x] [81.搜索旋转排序数组 II](./topics/binary-search/ext-search-in-rotated-sorted-array-ii.md) -- [ ] [34.在排序数组中查找元素的第一个和最后一个位置](./) -- [ ] [4.寻找两个正序数组的中位数](./) -- [ ] [222.完全二叉树的节点个数](./) +- [x] [33.搜索旋转排序数组](./topics/binary-search/ext-search-in-rotated-sorted-array.md) +- [x] [81.搜索旋转排序数组 II](./topics/binary-search/ext-search-in-rotated-sorted-array-ii.md) +- [ ] [34.在排序数组中查找元素的第一个和最后一个位置](./) +- [ ] [4.寻找两个正序数组的中位数](./) +- [ ] [222.完全二叉树的节点个数](./) ### 滑动窗口 #### 每日一题 -- [x] [【day-67】1456.定长子串中元音的最大数目](./topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md) -- [ ] [【day-70】76.最小覆盖子串](./topics/day-70.md) -- [ ] [【day-71】30.串联所有单词的子串](./topics/day-71.md) +- [x] [【day-67】1456.定长子串中元音的最大数目](./topics/sliding-window/67.maximum-number-of-vowels-in-a-substring-of-given-length.md) +- [ ] [【day-70】76.最小覆盖子串](./topics/day-70.md) +- [ ] [【day-71】30.串联所有单词的子串](./topics/day-71.md) #### 拓展题目 -- [x] [581.最短无序连续子数组](./topics/sliding-window/ext-shortest-unsorted-continuous-subarray.md) +- [x] [581.最短无序连续子数组](./topics/sliding-window/ext-shortest-unsorted-continuous-subarray.md) ### 位运算 -- [ ] [【day-72】268.缺失数字](./topics/day-72.md) -- [ ] [【day-73】78.子集](./topics/day-73.md) +- [ ] [【day-72】268.缺失数字](./topics/day-72.md) +- [ ] [【day-73】78.子集](./topics/day-73.md) ### 搜索(BFS, DFS, 回溯) -- [x] [【day-74】1254.统计封闭岛屿的数目](./topics/day-74.md) -- [ ] [【day-75】 51.N 皇后](./topics/day-75.md) -- [ ] [【day-76】 130.被围绕的区域](./topics/day-76.md) -- [ ] [【day-77】 827.最大人工岛](./topics/day-77.md) -- [ ] [【day-78】 89.格雷编码](./topics/day-78.md) -- [x] [【day-79】980.不同路径 III](./topics/day-79.md) +- [x] [【day-74】1254.统计封闭岛屿的数目](./topics/day-74.md) +- [ ] [【day-75】 51.N 皇后](./topics/day-75.md) +- [ ] [【day-76】 130.被围绕的区域](./topics/day-76.md) +- [ ] [【day-77】 827.最大人工岛](./topics/day-77.md) +- [ ] [【day-78】 89.格雷编码](./topics/day-78.md) +- [x] [【day-79】980.不同路径 III](./topics/day-79.md) -- [x] [5210.球会落何处](./topics/searching/ext-where-will-the-ball-fall.md) +- [x] [5210.球会落何处](./topics/searching/ext-where-will-the-ball-fall.md) ### 背包问题 -- [x] [【day-80】322.零钱兑换](./topics/day-80.md) -- [x] [【day-81】416. 分割等和子集](./topics/day-81.md) -- [x] [【day-82】494. 目标和](./topics/day-82.md) -- [ ] [【day-83】474. 一和零](./topics/day-83.md) +- [x] [【day-80】322.零钱兑换](./topics/day-80.md) +- [x] [【day-81】416. 分割等和子集](./topics/day-81.md) +- [x] [【day-82】494. 目标和](./topics/day-82.md) +- [ ] [【day-83】474. 一和零](./topics/day-83.md) ### 动态规划 -- [ ] [【day-84】爬楼梯变种](./topics/day-84.md) -- [ ] [【day-85】铺地毯-2021 网易校招](./topics/day-85.md) -- [ ] [【day-86】935.骑士拨号器](./topics/day-86.md) -- [ ] [【day-87】1458.两个子序列的最大点积](./topics/day-87.md) +- [ ] [【day-84】爬楼梯变种](./topics/day-84.md) +- [ ] [【day-85】铺地毯-2021 网易校招](./topics/day-85.md) +- [ ] [【day-86】935.骑士拨号器](./topics/day-86.md) +- [ ] [【day-87】1458.两个子序列的最大点积](./topics/day-87.md) ### 分治 -- [x] [【day-88】96.不同的二叉搜索树](./topics/day-88.md) -- [ ] [【day-89】23.合并 K 个升序链表](./topics/day-89.md) +- [x] [【day-88】96.不同的二叉搜索树](./topics/day-88.md) +- [ ] [【day-89】23.合并 K 个升序链表](./topics/day-89.md) ### 贪心 #### 每日一题 -- [ ] [【day-90】765.情侣牵手](./topics/day-90.md) -- [x] [【day-91】881.救生艇](./topics/day-91.md) +- [ ] [【day-90】765.情侣牵手](./topics/day-90.md) +- [x] [【day-91】881.救生艇](./topics/day-91.md) #### 贪心拓展题目 -- [x] [135.分发糖果](./topics/greedy/ext-candy.md) -- [x] [455.分发饼干](./topics/greedy/ext-assign-cookies.md) -- [x] [976.三角形的最大周长](./topics/greedy/ext-largest-perimeter-triangle.md) -- [x] [435.无重叠区间](./topics/greedy/ext-non-overlapping-intervals.md) -- [x] [605.种花问题](./topics/greedy/ext-can-place-flowers.md) +- [x] [135.分发糖果](./topics/greedy/ext-candy.md) +- [x] [455.分发饼干](./topics/greedy/ext-assign-cookies.md) +- [x] [976.三角形的最大周长](./topics/greedy/ext-largest-perimeter-triangle.md) +- [x] [435.无重叠区间](./topics/greedy/ext-non-overlapping-intervals.md) +- [x] [605.种花问题](./topics/greedy/ext-can-place-flowers.md) ## 其他 -- [x] [77.组合](./extensions/77.combination.md) -- [x] [5.最长回文子串](./extensions/5.longest-palindromic-substring.md) -- [ ] [面试题 04.09. 二叉搜索树序列](./extensions/04.09.bst-sequences-lcci.md) +- [x] [77.组合](./extensions/77.combination.md) +- [x] [5.最长回文子串](./extensions/5.longest-palindromic-substring.md) +- [ ] [面试题 04.09. 二叉搜索树序列](./extensions/04.09.bst-sequences-lcci.md) + +> [在线电子书](https://app.gitbook.com/@suki/s/91-days-algorithm/) +> +> [笔记](https://github.com/suukii/Articles#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%AE%97%E6%B3%95) From c045dbbaa667ec5500e6e7eb7aa4fe855f53eb18 Mon Sep 17 00:00:00 2001 From: suukii Date: Mon, 2 Aug 2021 23:29:02 +0800 Subject: [PATCH 42/44] =?UTF-8?q?update:=20=E5=90=88=E5=B9=B6K=E4=B8=AA?= =?UTF-8?q?=E5=8D=87=E5=BA=8F=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- medium/heap/56.merge-k-sorted-lists.md | 154 ++++++++++++++++++++++++- 1 file changed, 149 insertions(+), 5 deletions(-) diff --git a/medium/heap/56.merge-k-sorted-lists.md b/medium/heap/56.merge-k-sorted-lists.md index 1377b08..3a2607b 100644 --- a/medium/heap/56.merge-k-sorted-lists.md +++ b/medium/heap/56.merge-k-sorted-lists.md @@ -7,11 +7,15 @@ https://leetcode-cn.com/problems/merge-k-sorted-lists/ - [方法1:顺序合并](#方法1顺序合并) - [思路](#思路) - [复杂度分析](#复杂度分析) - - [代码](#代码) + - [代码(JavaScript/C++)](#代码javascriptc) - [方法2:顺序合并+堆](#方法2顺序合并堆) - [思路](#思路-1) - [复杂度分析](#复杂度分析-1) - - [代码](#代码-1) + - [代码](#代码) + - [方法3:分治](#方法3分治) + - [思路](#思路-2) + - [复杂度分析](#复杂度分析-2) + - [代码(JavaScript/C++)](#代码javascriptc-1) ## 题目描述 @@ -62,14 +66,14 @@ lists[i].length 的总和不超过 10^4 ### 思路 -跟合并 `两个` 升序链表的基本思路是一样的,只不过每次操作需要比较多个链表头的值。 +跟 [21.合并两个有序链表](../../problems/0021.merge-two-sorted-lists.md) 的基本思路是一样的,只不过每轮操作需要比较 k 个链表节点的值。 ### 复杂度分析 - 时间复杂度:$O(k*n)$,k 是链表个数,n 是合并后链表的长度。 - 空间复杂度:$O(1)$。 -### 代码 +### 代码(JavaScript/C++) JavaScript Code @@ -122,11 +126,61 @@ var mergeKLists = function (lists) { }; ``` +C++ code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +private: + bool isEmpty_(vector& lists) { + for (int i = 0; i < lists.size(); i++) { + if (lists[i]) return false; + } + return true; + } + int getMinVal_(vector& lists) { + int ans = INT_MAX; + int idx = -1; + for (int i = 0; i < lists.size(); i++) { + if (lists[i] && lists[i]->val < ans) { + ans = lists[i]->val; + idx = i; + } + } + lists[idx] = lists[idx]->next; + return ans; + } + +public: + ListNode* mergeKLists(vector& lists) { + ListNode* dummy = new ListNode(); + ListNode* tail = dummy; + + while (!isEmpty_(lists)) { + int min_val = getMinVal_(lists); + tail->next = new ListNode(min_val); + tail = tail->next; + } + + return dummy->next; + } +}; +``` + ## 方法2:顺序合并+堆 ### 思路 -跟上一个方法思路一样,只不过使用了堆来找链表最小值。 +跟 方法1 思路一致,不过用了堆来寻找 k 个链表节点中的最小值。 ### 复杂度分析 @@ -239,4 +293,94 @@ class MinHeap extends Heap { } ``` +## 方法3:分治 + +### 思路 + +- 将 k 个链表平均分成两份,分别进行合并后,再将两个结果进行合并。 +- 最后一步就是简单的 [合并两个有序链表](../../problems/0021.merge-two-sorted-lists.md)。 +- 而中间的步骤也很简单,只需要将 k/2 个链表再细分,再细分,细分到一次只需要处理两个链表就好了。 + +### 复杂度分析 + +- 时间复杂度:$O(nlogk)$,k 是链表个数,n 是合并后链表的长度。 +- 空间复杂度:$O(k)$,k 是链表个数,堆的空间大小。 + +### 代码(JavaScript/C++) + +JavaScript Code + +```js +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode[]} lists + * @return {ListNode} + */ +var mergeKLists = function(lists, start = 0, end = lists.length - 1) { + if (start > end) return null; + if (start === end) return lists[start]; + const mid = ((end - start) >> 1) + start; + return mergeTwoLists(mergeKLists(lists, start, mid), mergeKLists(lists, mid + 1, end)); +}; + +function mergeTwoLists(l1, l2) { + if (!l1) return l2; + if (!l2) return l1; + + if (l1.val < l2.val) { + l1.next = mergeTwoLists(l1.next, l2); + return l1; + } else { + l2.next = mergeTwoLists(l1, l2.next); + return l2; + } +} +``` + +C++ Code + +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* mergeKLists(vector& lists) { + return mergeKLists(lists, 0, lists.size() - 1); + } + + ListNode* mergeKLists(vector& lists, int start, int end) { + if (start > end) return nullptr; + if (start == end) return lists[start]; + int m = (end - start) / 2 + start; + return merge2Lists(mergeKLists(lists, start, m), mergeKLists(lists, m + 1, end)); + } + + ListNode* merge2Lists(ListNode* l1, ListNode* l2) { + if (!l1) return l2; + if (!l2) return l1; + if (l1->val < l2->val) { + l1->next = merge2Lists(l1->next, l2); + return l1; + } else { + l2->next = merge2Lists(l1, l2->next); + return l2; + } + } +}; +``` + 更多题解可以访问:[https://github.com/suukii/91-days-algorithm](https://github.com/suukii/91-days-algorithm) \ No newline at end of file From 70ceb35e4251c24dd3bfd3b3510c5c530be1f098 Mon Sep 17 00:00:00 2001 From: suukii <30331289+suukii@users.noreply.github.com> Date: Fri, 17 Sep 2021 18:09:42 +0800 Subject: [PATCH 43/44] Add Notion link --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ddf962b..f360dab 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +转到 Notion 上记录啦,更方便些,[戳这里🔗](https://suukii.notion.site/ca5e6d9d43704a9d82e44758636642d6?v=e7bdde0a51e9424fa96b876e78b03958) + +这个仓库可能不更新啦,内容也会逐步搬到 Notion 上的。 + +不过还是不要脸地说句,如果我的题解有帮到你的话,还是欢迎右上角 Star 🌟 这个仓库的。(拜托拜托ớ ₃ờ) + # LeetCode 题解 | 基础篇 | 进阶篇 | 专题篇 | From 5f735fd1b4cbc66590c8c92f45f240b4ac3df795 Mon Sep 17 00:00:00 2001 From: suukii <30331289+suukii@users.noreply.github.com> Date: Thu, 23 Dec 2021 10:32:18 +0800 Subject: [PATCH 44/44] =?UTF-8?q?=E5=A2=9E=E5=8A=A091=E7=AC=AC6=E6=9C=9F?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E5=88=97=E8=A1=A8=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f360dab..0e42ff3 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,18 @@ +# Leetcode 题解 + +## 路西法的91天学算法第6期题目列表 + +[戳这里🔗](https://suukii.notion.site/91-days-algorithm-problem-list-db9d0cf2f33249a2af7bdb41aaa92930) + +## 更新说明 + 转到 Notion 上记录啦,更方便些,[戳这里🔗](https://suukii.notion.site/ca5e6d9d43704a9d82e44758636642d6?v=e7bdde0a51e9424fa96b876e78b03958) 这个仓库可能不更新啦,内容也会逐步搬到 Notion 上的。 不过还是不要脸地说句,如果我的题解有帮到你的话,还是欢迎右上角 Star 🌟 这个仓库的。(拜托拜托ớ ₃ờ) -# LeetCode 题解 +## TOC | 基础篇 | 进阶篇 | 专题篇 | | --------------------------- | ------------------------- | --------------------------------------- |