Results 11 comments of thxiami

## 为什么会有精度丢失? 什么时候发生精度丢失? 本次讨论主要解决两个问题: 1. 使用 JS 编程时为什么会出现精度丢失? 2. 使用 JS 编程时什么时候发生精度丢失? 即 `Number.MAX_SAFE_INTEGER`的值是多少? ### 1. 使用 JS 编程时为什么会出现精度丢失? 建议先看下本 issue 里作者对于 JS 里怎么存储数字的介绍, 这里简述一下其原理, 只是为了便于解释精度丢失的议题: JS 里用 64 bits...

> 因此对于方法库,我不建议只默认导出一个对象,而是应该逐个方法导入 ... 请问这里是不是手滑写错了: ”而是应该逐个方法**导出**” 读的时候有点没理解

> // 扁平化 flat可以传递参数,根据要求展开depth层 > const flats = arr.flat() > // 去重 > [...new Set(flats)] 题目是让自己实现数组去重和扁平化函数的, 用自带的 API 就失去意义了

### 1 数组去重函数 题目中没有给出数组中元素的类型, 这里假设元素类型为`number`. 如果是其他类型, 对代码稍作修改即可. 这里给出两种方案, 其时间复杂度和空间复杂度不同. #### 方案1: 借助哈希表数据结构记录出现过的元素 1. 遍历数组, 使用 `Object` 辅助记录出现过的元素 2. 通过 `Object` 重建数组,也可以使用一个空数组在遍历时直接存储`Object`中未出现的元素. ```js function deduplicate(arr) { var obj = Object.create(null) var...

时间复杂度: O(n), n 为字符的个数 空间复杂度: O(n), 栈所用的空间 ```js /** * 删除字符串中出现次数 >= 2 次的相邻字符 * @param {string}s */ function removeDuplicate(s) { const stack = [] // Space: O(n) let top...

@huangruitian 1.双指针寻找两数之和的方法挺巧妙的~ 可以用二分法进一步加快一下紧逼速度 2. K数之和的问题, 目前的思路也是类似将三数之和降为两数之和的办法. 假设数组有 n 个数, 求满足 K 个数之和为sum的所有组合. a. 利用O(nlogn) 的时间排序 b. 一个循环将问题拆分为 n 个(K-1)数之和, 时间复杂度为 T(K) = O(n * T(K-1)) = O(n^(k-1)) ```js // 双指针夹逼...

@sisterAn 使用 Map() 的第一种方法, 也是可以通过排序来去重的. ```js var threeSum = function (nums) { let set = new Set() // 使用 Set() 即可满足需求, 相对节省内存 let result = [] nums.sort((a, b) => (a...

@fanefanes 提个小建议: 变量`L`可以去掉的, 因为`L === Stack.length`

> > @fanefanes > > 提个小建议: 变量`L`可以去掉的, 因为`L === Stack.length` > > 遍历的时候尽量赋值常量, 要不然for每次循环会进行一次数组遍历查询 获取length 获取数组的 `length` 应该不需要遍历数组才能获得吧, 这是它的一个属性, O(1)的时间复杂度

@webfool 新加的代码与规范中规定的行为不符合, 你的代码: ```js new Promise((resolve, reject) => resolve(111)) .finally(Promise.reject(222)) // Promise {: 111} ``` 之所以最终返回的 `Promise`的状态为 `resolve(111)`, 那是因为你传给`finally`函数的参数的不是函数类型, 而是一个`Promise`对象. 如果对代码进行小小修改, 就发现 @lvtraveler 实现的 `finally`方法与 es6 的 `Promise`的 `finally` 的行为一致:...