blog
blog copied to clipboard
博客系列
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果xa[n/2],则我们只要在数组a的右 半部继续搜索x。 常见问题是用来查找一个数字在有序数组中的索引位置。 如果该题目暴力解决的话需要 O(n) 的时间复杂度,但是如果二分的话则可以降低到 O(logn) 的时间复杂度。 ### 遍历法for循环,时间复杂度O(n) ```js var searchInsert = function (arr, x) { for (let i = 0, len = arr.length; i <...
```js let obj = { a: 1, b: { c: 2 }, d: [1, 2, 3, 4], e: [{ f: [5, 6] }] } let r1 = parse(obj, 'a') let...
``` let arr = [ [1], [1, 2, 3], [1, [2, 3]] ] ``` JS自带`flat`方法 ```js arr.flat(Infinity) ``` toString方法可以 ```js arr.toString().split(',').map(item => Number(item)) ``` JSON的方法也可以 ```js JSON.stringify(arr).replace(/\[\]/g, '').split(',').map(item => Number(item))...
挂载 ``` constructor static getDerivedStateFromProps render conponentDidMount 可以 ``` 渲染 ``` static getDerivedStateFromProps shouldComponentUpdate render getSnapShotBeforeUpdate componentDidUpdate 可以 ``` 卸载 ``` conponentWillUnmount ``` 错误处理 ``` getDerivedStateFromError componentDidCatch 可以 ```
```js Number.prototype.add = function (a) { let value = this.valueOf() function next(num) { value = value + num return value } let result = next(a) return result } ```
我之前面试了好几家公司,都会考一些关于二叉树的面试题,比如下面这几个面试题: 1. 二叉树有哪几种遍历方式 2. 不用递归如何遍历二叉树 3. 如何判断二叉树是对称二叉树 4. 将二叉树左右节点翻转 5. 实现一个函数接收任意二叉树,求二叉树所有根节点到叶子路径组成的数字之和 > 前端常考的算法题就是二叉树和排序了,这些好像很多公司都会有一两道这样的题目,大家面试前可以重点看一下这些知识点,这篇文章主要讲解二叉树。 ## 基础知识 了解二叉树之前我们先要知道什么是二叉树和二叉树的组成。 二叉树是每个节点不超过两个。一棵最上面的节点称为根节点,如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子节点,一个节点可以有0个或多个子节点,没有任何子节点的节点称为叶子节点 下面代码就是创建二叉树的过程。 ```js function Node(value, left, right) { this.value = value; this.left = left;...
```js function normalize (str) { let s = []; let list = []; let obj = {} for (let i = 0; i < str.length; i++) { let value =...
求和函数的用法: ```j's add(1, 2, 3, 4, 5); add(1)(2)(3)(4)(5); add(1, 2)(2, 3, 5); ``` 1. 用闭包抑制变量 ```js // 实现方法1,用闭包抑制变量,保存参数,当参数达到一定的个数进行求和操作 const add = (function (length) { let allArgs = []; function _add...
`bind()` 方法创建一个新的函数,在 `bind()` 被调用时,这个新函数的 `this` 被指定为 `bind()` 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。 > [来自MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) 有一点大家需要注意,**可以作为构造函数使用的绑定函数** ```js function point(x, y) { this.x = x; this.y = y; } point.prototype.toString = function () { return this.x...
