前端数据结构与算法(JS版)——那些你不得不知道的算法

一、算法简述

1.1 为何学习算法

算法现在是程序员标配,一个会算法的程序员无疑在更多的地方占优势。对于前端来说,算法更是敲开大厂的敲门砖,让我们在大厂的面试中占尽优势。同时,掌握算法让我们在解决一些复杂的问题上更加轻松。总而言之,算法——你不得不会。
学习原因:

为了应聘
为了工作
为了参加竞赛

1.2 学习算法的三部曲

  • 掌握数据结构与算法的特点及其应用场景
  • 刷题使我们从熟悉到掌握算法不可缺少的征途,推荐LeetCode
  • 实战:把掌握的算法与数据结构应用到工作中,融会贯通

1.3 如何刷题

  • 刷题网站:推荐使用LeetCode
  • 刷题顺序:推荐按类型刷题,相当于几种训练
  • 重点关注:通用套路、时间、空间复杂度的分析和优化

二、数据结构与算法简介

2.1 数据结构

计算机存储、组织数据的方式。就像我们生活中的锅碗瓢盆。

2.2 算法

一系列解决问题的清晰指令,就像我们做菜的菜谱

2.3 数据结构与算法

  • 程序=数据结构+算法
  • 数据结构为算法提供服务,算法围绕数据结构操作。

2.4 数据结构分类

  • 栈、队列、链表——都是有序的,连成一串的
  • 集合、字典——无序的
  • 树、堆、图——有链接关系

三、如何刷LeetCode

3.1 LeetCode简介

  • LeetCode是一个专注于程序员成长和企业技术人才服务的品牌
  • 功能:题库、竞赛、社区和模拟面试等等

3.2 如何在题库中搜索

  • 通过题号搜索
  • 通过难度、列表、状态、标签搜索
  • 通过企业搜索(需要付费)

3.3 如何做题

  • 查看题目描述、评论、题解、提交记录
  • 设置语言、编辑器选项
  • 执行代码、提交代码
  • 会用笔记本,查看做题进展

四、时间复杂度

  • 是一个函数,用O表示,比如O(1) 、O(n)
  • 定性描述该算法的时间
  • O(1)
 let i=1;
 i+=1;
  • O(n)
for(var i=0;i<n;i++){
	console.log(i)
}
  • O(n)=O(1)+O(n),结果去较大的值
let i=1;
i+=1;
for(var i=0;i<n;i++){
	console.log(i)
}
  • O(n^2)
 for(var i=0;i<n;i++){
    for(var j=0;j<n;j++){
         console.log(i,j1);
    }
 }

-O(logN)

 let i=1;
     while(i<n){
        console.log(i);
        i*=2
     }

五、空间复杂度

  • 是一个函数,用O表示,比如O(1) 、O(n)

  • 算法在执行过程中临时占用存储空间大小的度量

  • O(1)只声明一个变量,很定占用一个内存单元
    在这里插入图片描述

  • O(n)往list里推送n个值,占用n个内存单元
    在这里插入图片描述

  • O(n^2)
    在这里插入图片描述

明日继续——栈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值