We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
题目
二叉树的层次遍历(中等难度)
代码
/** * Definition for a binary tree root. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number[][]} */ var levelOrder = function(root, receiver, level = 1) { // 若为空树则直接返回空数组 if (!root) return receiver || []; // 否则先初始化 receiver = receiver || [[root.val]]; // 然后取出左右节点,并计算出下一层的层序 // 这个层序对应数组的下标,该层的所有节点数值都会被放入该下标对应的元素数组中 // 从而生成最终结果 let { left, right } = root, nextLevel = level + 1; // 若有左节点 if (left) { // 则先将左节点的值放入对应数组 if (receiver[level]) receiver[level].push(left.val); else receiver[level] = [left.val]; // 再递归调用处理该左节点,将其子子孙孙层节点的值放入对应数组中 levelOrder(left, receiver, nextLevel); } // 若有右节点,同理 if (right) { if (receiver[level]) receiver[level].push(right.val); else receiver[level] = [right.val]; levelOrder(right, receiver, nextLevel); } // 最终返回结果 return receiver; };
执行结果:通过 执行用时:68 ms, 在所有 javascript 提交中击败了 87.19% 的用户 内存消耗:34.8 MB, 在所有 javascript 提交中击败了 27.86% 的用户
思路: 若为空树则直接返回空数组,否则先初始化 然后取出左右节点,并计算出下一层的层序 这个层序对应数组的下标,该层的所有节点数值都会被放入该下标对应的元素数组中 从而生成最终结果 其中,若有左节点,则先将左节点的值放入对应数组 再递归调用处理该左节点,将其子子孙孙层节点的值放入对应数组中 若有右节点,同理 最终返回结果
对比: 与高分对比: 本代码运行 34 个测试用例花费约 68ms,平均一个测试用例约 2ms; 高分代码运行 34 个测试用例花费约 68ms,平均一个测试用例约 2ms。 思路相似代码略。
阅读: Understand CircuitBreaker Design pattern with simple practical example
点评:
本文介绍了服务开发的一种实用模式,被称作“断路器模式”(Circuit Breaker Pattern)。
断路器,在电气领域中指的是一种用来断开电路的设备。 为什么要断开电路?可能的原因有接地故障或者过负荷,及时断开电路可以防止故障和异常范围扩大。
运用到服务器开发中,当客户端向 A 服务发送请求,想要获得某些数据, 而 A 服务需要向 B 服务请求获得该数据,再返回给客户端时, 如果 B 服务出现了故障或者过载,就无法及时响应 A 服务的请求, 故而 A 服务无法及时对客户端做出应答——很明显故障和异常的范围包括了 B、A 和 客户端。
比较合理的运行方式应该是,客户端向 A 服务请求数据, 如果 A 服务向 B 服务发送请求获得该数据的时间过长, 或者 A 服务已经获知 B 服务无法正常响应请求时, 则应该直接向客户端发送失败响应, 同时,A 服务应更新本地 B 服务的状态,并在获知 B 服务恢复正常时重置该状态。
这种模式就是“断路器模式”。
本文经过测试,使用断路器模式的服务在运行过程中的错误率远远低于未使用断路器模式的服务。
我们知道,对于一个数值数组,排序可以使用:
someNumberList.sort((a, b) => a - b); // 反之 b - a 为降序
但对于一个字符串数组,就不能像上面那样子直接相减了。
此时可以使用:
someStringList.sort((a, b) => a.localeCompare(b)); // 反之为降序
localeCompare 详细参数参考:
localeCompare
分享一篇极客“左耳听风”专栏文章(据说可限10位免费阅读哦) 97 | 高效学习:深度、归纳和坚持实践
这是一篇关于如何高效学习的方法论和实践指导的系列文章(之三),
注意是“高效学习”而非“高速学习”。
本文提供了一套系统学习的模板,强调了举一反三、总结归纳和坚持实践的重要性。
学习一项技术遵循的模板
如何训练举一反三的能力
如何正确进行总结和归纳
坚持不懈
The text was updated successfully, but these errors were encountered:
No branches or pull requests
ARTS 第二十九周(2019.10.14~2019.10.20)
Algorithm 二叉树的层次遍历
题目
二叉树的层次遍历(中等难度)
代码
执行结果:通过
执行用时:68 ms, 在所有 javascript 提交中击败了 87.19% 的用户
内存消耗:34.8 MB, 在所有 javascript 提交中击败了 27.86% 的用户
思路:
若为空树则直接返回空数组,否则先初始化
然后取出左右节点,并计算出下一层的层序
这个层序对应数组的下标,该层的所有节点数值都会被放入该下标对应的元素数组中
从而生成最终结果
其中,若有左节点,则先将左节点的值放入对应数组
再递归调用处理该左节点,将其子子孙孙层节点的值放入对应数组中
若有右节点,同理
最终返回结果
对比:
与高分对比:
本代码运行 34 个测试用例花费约 68ms,平均一个测试用例约 2ms;
高分代码运行 34 个测试用例花费约 68ms,平均一个测试用例约 2ms。
思路相似代码略。
Review 服务开发模式之“断路器模式”
阅读:
Understand CircuitBreaker Design pattern with simple practical example
点评:
本文介绍了服务开发的一种实用模式,被称作“断路器模式”(Circuit Breaker Pattern)。
断路器,在电气领域中指的是一种用来断开电路的设备。
为什么要断开电路?可能的原因有接地故障或者过负荷,及时断开电路可以防止故障和异常范围扩大。
运用到服务器开发中,当客户端向 A 服务发送请求,想要获得某些数据,
而 A 服务需要向 B 服务请求获得该数据,再返回给客户端时,
如果 B 服务出现了故障或者过载,就无法及时响应 A 服务的请求,
故而 A 服务无法及时对客户端做出应答——很明显故障和异常的范围包括了 B、A 和 客户端。
比较合理的运行方式应该是,客户端向 A 服务请求数据,
如果 A 服务向 B 服务发送请求获得该数据的时间过长,
或者 A 服务已经获知 B 服务无法正常响应请求时,
则应该直接向客户端发送失败响应,
同时,A 服务应更新本地 B 服务的状态,并在获知 B 服务恢复正常时重置该状态。
这种模式就是“断路器模式”。
本文经过测试,使用断路器模式的服务在运行过程中的错误率远远低于未使用断路器模式的服务。
Tip 字符串数组排序
我们知道,对于一个数值数组,排序可以使用:
但对于一个字符串数组,就不能像上面那样子直接相减了。
此时可以使用:
localeCompare
详细参数参考:Share [极客专栏] 97 | 高效学习:深度、归纳和坚持实践
分享一篇极客“左耳听风”专栏文章(据说可限10位免费阅读哦)
97 | 高效学习:深度、归纳和坚持实践
这是一篇关于如何高效学习的方法论和实践指导的系列文章(之三),
注意是“高效学习”而非“高速学习”。
本文提供了一套系统学习的模板,强调了举一反三、总结归纳和坚持实践的重要性。
学习一项技术遵循的模板
如何训练举一反三的能力
如何正确进行总结和归纳
坚持不懈
The text was updated successfully, but these errors were encountered: