时间复杂度和空间复杂度是用于衡量算法效率的概念。

  1. 时间复杂度: 时间复杂度描述了算法运行时间随输入规模增长而增加的速率。它表示算法执行所需的时间与输入数据的大小之间的关系。通常用大 O 符号(O)来表示时间复杂度。 例如,如果一个算法的时间复杂度为 O(n),意味着随着输入数据的大小 n 增加,算法的运行时间会线性增长。如果时间复杂度为 O(n^2),则表示随着输入数据的大小 n 增加,算法的运行时间会按二次方增长。一般而言,时间复杂度越低,算法执行速度越快。

  2. 空间复杂度: 空间复杂度描述了算法执行所需的额外空间随输入规模增长而增加的速率。它表示算法使用的额外内存空间与输入数据的大小之间的关系。通常也用大 O 符号(O)来表示空间复杂度。 例如,如果一个算法的空间复杂度为 O(n),意味着随着输入数据的大小 n 增加,算法使用的额外内存空间也会线性增长。如果空间复杂度为 O(1),则表示算法使用的额外内存空间是常数,与输入数据的大小无关。

在进行算法分析时,我们通常关注算法的时间复杂度和空间复杂度,以便评估算法的效率和资源利用情况。较低的时间复杂度和空间复杂度通常意味着更优秀的算法。然而,要根据具体情况选择合适的算法,因为某些情况下可能需要在时间和空间之间进行权衡。

阅读全文 »


问题 1:输入一个数组 [1,2,3,4,5,6,7],k=3,即旋转 3 步,输出 [5,6,7,1,2,3,4]

思路 1:把末尾的元素挨个 pop ,然后 unshift 到数组前面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function rotateArray(arr, k) {
const length = arr.length;
if (!k || length === 0) return arr;
k = Math.abs(k % length);
for (let i = 0; i < k; i++) {
const lastElement = arr.pop();
arr.unshift(lastElement);
}
return arr;
}

const inputArray = [1, 2, 3, 4, 5, 6, 7];
const k = 3;
const rotatedArray = rotateArray(inputArray, k);
console.log(rotatedArray); // Output: [5, 6, 7, 1, 2, 3, 4]

思路 2:把数组拆分,最后 concat 拼接到一起

阅读全文 »


对象

  1. 什么是对象

    • 多个数据的封装体
    • 用来保存多个数据的容器
    • 一个对象代表现实中的一个事物
  2. 为什么要用对象

    • 统一管理多个数据
  3. 对象的组成

    • 属性:属性名(字符串)和属性值(任意)组成
    • 方法:一种特别的属性(属性值是函数)
  4. 如何访问对象内部数据

    • .属性名:编码简单,有时不能用
    • [‘属性名’]:编码麻烦,能通用
  5. FAQ

    • 什么时候必须用[‘属性名’]的方式
      • 属性名包含特殊字符:- 空格
      • 变量名不确定
阅读全文 »


数据类型

分类

基本(值)类型

  • String:任意字符串
  • Number:任意数值
  • boolean:true/false
  • undefined:undefined
  • null:null

对象(引用)类型

  • Object:任意对象
  • Function:一种特别的对象(可以执行)
  • Array:一种特别的对象(数值下标,内部数据是有序的 )

判断

  • typeof 返回数据类型的字符串表达(小写)
    • 可以判断:undefined / 数值 / 字符串 / 布尔值 / function
    • 不能判断:null 与 object、object 与 array
  • instanceof 判断对象的具体类型
  • ===
    • 可以判断:undefined / null
  1. 函数高级
  2. 面向对象高级
  3. 线程机制与事件机制
阅读全文 »


现在有一个需求是:前端根据用户勾选的状态参数绘制多条曲线。

实现思路:

  1. 前端获取到用户勾选的状态参数。
  2. 将状态参数列表发给后端。
  3. 后端将状态参数的数据发给前端。
  4. 前端根据后端发送的参数,分别构建 legend,X 轴,Y 轴数据,并生成图表需要的 option,更新图表。
阅读全文 »
0%