DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总
DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总结
目录
数据结构的最强学习路线之问题为导向的十大类刷题算法总结
一、学习相关的讲解与刷题平台
1.1、数据结构+算法可视化
1.2、常见的刷题平台及其链接
国外平台
国内平台
二、刷题集合
DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
DayDayUp之Job:LeetCode—算法工程师—面试必考精华版75 题覆盖全量考点之LeetCode75(解决思路及其代码)
三、常见的十大类考试题型
1、数组Arrays和字符串Strings
2、链表(Linked List)
3、栈和队列(Stacks and Queues)
4、树和二叉树(Trees and Binary Trees)
堆的实现、堆排序、
5、图(Graph)
6、哈希表(Hash Table)
7、排序和搜索(Sorting and Searching)
8、动态规划(Dynamic Programming)
9、回溯法(Backtracking)
10、递归
11、贪心算法
12、分治算法
数据结构的最强学习路线之问题为导向的十大类刷题算法总结
一、学习相关的讲解与刷题平台
1.1、数据结构+算法可视化
USFCA |
美国旧金山大学 Data Structure Visualization |
Backtracking - Hamiltonean Cycles |
|
VisuAlgo |
数据结构和算法动态可视化 (Chinese) - VisuAlgo |
数据结构复杂度 Big-O Algorithm Complexity Cheat Sheet (Know Thy Complexities!) @ericdrowell |
1.2、常见的刷题平台及其链接
国外平台
平台 |
简介 |
地址 |
LeetCode |
LeetCode是一个在线的技术面试准备平台,它提供了各种算法和数据结构的编程题目,供开发者练习和提高他们的编程技能。LeetCode平台上的题目主要涵盖了各种编程语言和技术领域,包括但不限于算法、数据结构、数据库、系统设计和面试题等。 2011年,LeetCode起源于美国硅谷。 2015年,转型为互联网技术人才成长平台。 2017年,张云浩加入,在其努力下,LeetCode 当年底全球用户就已破百万。 2018年2月,力扣正式进入中国,中文平台于同月测试上线。 |
LeetCode - The World's Leading Online Programming Learning Platform |
HackerRank |
HackerRank提供了各种编程题目和算法挑战,适合不同难度和领域的开发者。它还提供了竞赛和实时编程环境,可以测试和评估编程技能。 |
HackerRank - Online Coding Tests and Technical Interviews |
CodeSignal |
CodeSignal是一个在线编程和技能评估平台,提供了大量的算法题目和编程挑战。它还提供了专门用于技能评估和面试准备的功能。 |
CodeSignal - Technical Interview & Assessment Solution |
Project Euler |
Project Euler是一个以数学和计算机科学问题为基础的刷题平台。它提供了一系列具有挑战性的问题,旨在锻炼解决问题和编程技巧。 |
https://projecteuler.net |
Topcoder |
Topcoder是一个面向开发者的竞赛平台,提供了各种算法竞赛和编程挑战。它还有一个题库,包含了许多经典的算法和数据结构问题。 |
Top Website Designers, Developers, Freelancers for Your Next Project | Topcoder |
国内平台
平台 |
简介 |
地址 |
牛客网 |
牛客网成立于 2014年9月,牛客网,是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的招聘类网站。 |
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 |
Lintcode |
lintcode炼码是一个leetcode中文版刷题平台,能够让我们通过在线实操的方式,提升编程能力。九章算法(杭州)科技有限公司。 |
LintCode 炼码 |
二、刷题集合
DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
https://yunyaniu.blog.csdn.net/article/details/100822646
DayDayUp之Job:LeetCode—算法工程师—面试必考精华版75 题覆盖全量考点之LeetCode75(解决思路及其代码)
https://yunyaniu.blog.csdn.net/article/details/130716205
三、常见的十大类考试题型
涉及到数组和链表的遍历、插入、删除等操作。典型例题有两数之和、删除链表的倒数第N个节点等。
基本 |
数组、字符串、排序、矩阵、模拟、枚举、字符串匹配、桶排序、计数排序、基数排序 |
算法 |
动态规划、深度优先搜索、贪心、广度优先搜索、二分查找、回溯、递归、分治、记忆化搜索、归并排序、快速选择 |
基础数据结构 |
哈希表、树、二叉树、栈、堆(优先队列)、图、链表、有序集合、二叉搜索树、单调栈、队列、拓扑排序、最短路、单调队列 |
高级数据结构 |
并查集、字典树、线段树、树状数组、后缀数组 |
技巧 |
双指针、位运算、前缀和、计数、滑动窗口、状态压缩、哈希函数、滚动哈希、扫描线 |
数学 |
数学、几何、数论博弈、组合数学、随机化、概率与统计、水塘抽样、拒绝采样 |
1、数组Arrays和字符串Strings
包括数组操作、字符串处理、子数组/子串问题等。
数组操作(插入、删除、查找等)
字符串操作(查找、替换、翻转等)
子数组问题(最大子数组和、连续子数组等)
涉及到字符串的匹配、替换、删除等操作。典型例题有最长公共前缀、正则表达式匹配等。
如回文串、字符串相乘等。
数组操作 |
|
LeetCode54 螺旋矩阵 LeetCode76 最小覆盖子串 LeetCode75 颜色分类 LeetCode73 矩阵置零 LeetCode384 打乱数组 LeetCode581 最短无序连续子数组 LeetCode945 使数组唯一的最小增量 |
2、链表(Linked List)
包括链表的插入、删除、反转、环检测等操作,以及链表相关的问题如合并链表、判断链表是否相交等。
链表操作(插入、删除、查找等)
链表反转
链表中环的检测和处理
链表操作 |
快慢指针遍历 |
LeetCode206 反转链表 LeetCode19 删除链表的倒数第N个节点 LeetCode25 k个一组翻转链表 LeetCode141 环形链表 LeetCode142 环形链表Ⅱ LeetCode61 旋转链表 LeetCode138 复制带随机指针的链表 LeetCode160 相交链表 LeetCode707 设计链表 |
LeetCode141 环形链表 LeetCode202 快乐数 LeetCode876 链表的中间结点 |
3、栈和队列(Stacks and Queues)
包括栈和队列的实现、应用和常见问题,如最小栈、括号匹配、队列实现栈等。
栈的应用(括号匹配、后缀表达式求值等)
队列的应用(滑动窗口、任务调度等)
涉及到栈和队列的实现及其应用。典型例题有有效的括号、滑动窗口最大值等。
优先队列的应用和常见问题如前K个高频元素、合并K个排序数组等。
栈 |
双指针/滑动窗口 |
LeetCode20 有效的括号 LeetCode32 最长有效括号 LeetCode155 最小栈 LeetCode224 基本计算器 LeetCode232 用栈实现队列 LeetCode316 去除重复字母 |
LeetCode3 无重复字符的最长子串 LeetCode11 盛最多水的容器 LeetCode15 三数之和 LeetCode16 最接近的三数之和 LeetCode26 删除排序数组中的重复项 LeetCode42 接雨水 LeetCode121 买卖股票的最佳时机 LeetCode209 长度最小的子数组 |
4、树和二叉树(Trees and Binary Trees)
包括树和二叉树的遍历(前序、中序、后序、层序)、构建、操作和常见问题如验证二叉搜索树、求二叉树的最大深度等。
二叉树的遍历(前序、中序、后序、层次遍历)
二叉树的构建和修改
递归问题(斐波那契数列、汉诺塔等)
涉及到二叉树、二叉搜索树以及其他树的遍历、构造、查询等操作。典型例题有二叉树的中序遍历、路由器的最短路径等。
二叉树 |
二叉搜索树 |
LeetCode94 二叉树的中序遍历 LeetCode102 二叉树的层次遍历 LeetCode110 平衡二叉树 LeetCode144 二叉树的前序遍历 LeetCode145 二叉树的后序遍历 |
LeetCode98 验证二叉搜索树 LeetCode450 删除二叉搜索树中的节点 LeetCode701 二叉搜索树中的插入操作 |
堆的实现、堆排序、
5、图(Graph)
包括图的表示方法(邻接矩阵、邻接表)、遍历算法(深度优先搜索、广度优先搜索)和常见问题如查找最短路径、判断图是否连通等。
图的遍历(深度优先搜索、广度优先搜索)
最短路径问题(Dijkstra算法、Floyd-Warshall算法)
最小生成树问题(Kruskal算法、Prim算法)
涉及到图的遍历和最短路径算法。典型例题有岛屿数量、课程表等。
深度优先搜索与广度优先搜索。如单词接龙、 autonomous driving path planning等。
6、哈希表(Hash Table)
包括哈希表的实现、冲突解决方法、哈希函数设计和相关问题如两数之和、字母异位词分组等。涉及到哈希表的实现和查询等操作。典型例题有两个列表的交集、检查数组相对大小等。
7、排序和搜索(Sorting and Searching)
包括各种排序算法(冒泡排序、快速排序、归并排序等)和搜索算法(二分查找、深度优先搜索、广度优先搜索等)以及相关问题。
排序和查找
常见排序算法(快速排序、归并排序、堆排序等)
二分查找
哈希查找
如插入排序、归并排序、快速排序等。
8、动态规划(Dynamic Programming)
包括动态规划的概念、解题思路和常见问题如背包问题、最长递增子序列等。
最长公共子序列(LCS)
最长递增子序列(LIS)
背包问题(0-1背包、完全背包等)
涉及到动态规划的定义和实现。典型例题有爬楼梯、零钱兑换等。
最长公共子序列、爬楼梯等。
动态规划 |
|
LeetCode5 最长回文子串 LeetCode53 最大子序和 LeetCode62 不同路径 LeetCode64 最小路径和 LeetCode70 爬楼梯 LeetCode118 杨辉三角 LeetCode300 最长上升子序列 LeetCode1143 最长公共子序列 |
9、回溯法(Backtracking)
包括回溯法的原理、解题思路和典型问题如全排列、组合总和等。
全排列问题
N皇后问题
图的着色问题
涉及到回溯法的实现。典型例题有组合总和、字母异位词分组等。
回溯算法 |
|
LeetCode10 正则表达式匹配 LeetCode22 括号生成 LeetCode40 组合总和2 LeetCode46 全排列 |
10、递归
涉及到递归的定义和实现。典型例题有斐波那契数、N皇后问题等。
递归 |
|
LeetCode21 合并两个有序链表 LeetCode101 对称二叉树 LeetCode104 二叉树的最大深度 LeetCode226 翻转二叉树 LeetCode236 二叉树的最近公共祖先 |
11、贪心算法
区间调度问题
最小生成树问题(Kruskal算法、Prim算法)
霍夫曼编码
贪心算法 |
|
LeetCode 11. 盛最多水的容器 LeetCode 406. 根据身高重建队列 LeetCode 55. 跳跃游戏 LeetCode 122. 买卖股票的最佳时机 II LeetCode 309. 最佳买卖股票时机含冷冻期 LeetCode 714. 买卖股票的最佳时机含手续费 |
12、分治算法
归并排序
快速排序
大整数乘法(Karatsuba算法)
DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总相关推荐
- DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略
DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...
- CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧
CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...
- CV:计算机视觉技最强学习路线
CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧_ ...
- 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查
03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...
- DS:机器学习之数据科学方向最强学习路线之数据分析、数据挖掘、机器学习工程化团队之详细攻略(更新中)
DS:机器学习之数据科学方向最强学习路线之数据分析.数据挖掘.机器学习工程化团队之详细攻略(更新中) 目录 最强学习路线 DS市场岗位要求 DS应用领域 基本必备技能
- DS/ML:数据科学技术之数据科学生命周期(四大层次+机器学习六大阶段+数据挖掘【5+6+6+4+4+1】步骤)的全流程最强学习路线讲解之详细攻略
DS/ML:数据科学技术之数据科学生命周期(四大层次+机器学习六大阶段+数据挖掘[5+6+6+4+4+1]步骤)的全流程最强学习路线讲解之详细攻略 导读:本文章是博主在数据科学和机器学习领域,先后实战 ...
- C++语言:C语言/C++语言的简介、发展历史、应用领域、编程语言环境IDE安装、最强学习路线之详细攻略
C++语言:C语言/C++语言的简介.发展历史.应用领域.编程语言环境IDE安装.最强学习路线之详细攻略 目录 C语言/C++语言的简介 1.C语言的历史重要性-C语言是现代编程语言的开山鼻祖
- 20210310 20210311 :栈、队列、堆类题目合集
栈.队列.堆类题目合集 写在前面 题目列表 思路分析 代码实现 写在前面 栈.队列.堆基本的题目就是这些,需要特殊技巧的另算,重写一遍保证熟练掌握这些题目并且达到熟练使用的程度.记录以便后续再次学习. ...
- 【数据结构】栈、队列、堆的python实现
[数据结构]栈.队列.堆的python实现 一.栈的python实现 1.1.栈的列表实现方法 1.2.用双向队列模拟栈 二.队列的python实现 2.1.队列的列表实现 2.2.使用deque实现 ...
最新文章
- 作业盒子完成1.5亿美元D轮融资,用AI普及教育资源
- 将特定像素点在图像上连接起来_(NeurIPS 2019) Gated CRF Loss-一种用于弱监督图像语义分割的新型损失函数...
- kali-linux 完美解决sublime输入 中文
- 永久代内存java_Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- 小程序时间转换成时间戳
- 怎么发表论文能保证被收录
- CodeForces - 1535C Unstable String(思维)
- 计算机桌面运行慢,电脑越来越慢原因 电脑运行慢解决方法【详解】
- 程序员面试金典 - 面试题 01.08. 零矩阵
- [编程] C语言变量和数据类型总结练习题
- 浏览计算机已查找驱动程序软件,欢迎访问海南省数字证书认证中心
- 听说Unscrambler HSI是个很牛的光谱分析软件?
- UML常用图--类图,用例图,序列图(时序图),协作图(通信图),状态图,活动图
- 树莓派系列五:openCV之火焰检测(一)
- mysql查询excel表_使用SQL语句实现对Excel工作表数据进行查询的方法
- CTF中压缩文件的常见解法
- yum是干什么的_刨根问底:什么是yum源,yum的工作原理又是什么
- REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格
- Android实现3DTouch效果
- SASS实现颜色卡动画