![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Jeremy_lf
知所先后
展开
-
【LeetCode】动态规划相关问题
态规划问题的一般形式就是求最值,求解动态规划的核心问题是穷举。动态规划三要素:重叠子问题、最优子结构、状态转移方程转态转移方程:明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义。# 初始化 base casedp[0][0][...] = base# 进行状态转移for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态原创 2020-08-01 19:44:57 · 282 阅读 · 1 评论 -
深度优先搜索算法(DFS)详解
DFS即Depth First Search,是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。##DFS模块基本步骤DFS(dep,...){ if (找到解 or 走不下去了) { ... return } 枚举下一种可能出现的情况,DFS(dep+1,...)}例题地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,原创 2020-05-15 23:39:51 · 2914 阅读 · 0 评论 -
排序算法之选择/插入排序【python实现】
1、选择排序基本步骤如下:1、在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3、以此类推,直到所有元素均排序完毕。def select_sort(ary): n = len(ary) for i in range(0,n): min = i ...原创 2020-04-13 20:55:38 · 143 阅读 · 0 评论 -
排序算法之堆排序及Python实现
面试中经常会被问到排序算法,其中快速排序、归并排序、堆排序最有可能会被问到,它们的相似的地方在于算法复杂度均为O(nlogn),其中快排和归并排序前面已经介绍过,今天我们来学习一下堆排序。堆排序基本概念堆排序是利用堆进行排序的,堆是一种完全二叉树。完全二叉树是一种除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐的树。堆有两种类型: 大根堆小根堆两种类型的概念如下:大根...原创 2020-04-13 09:48:54 · 256 阅读 · 0 评论 -
C++基础知识点总结
1.面向对象技术的基本概念是什么,三个基本特征是什么?答:基本概念:类、对象、继承; 基本特征:封装、继承、多态。封装:将低层次的元素组合起来形成新的、更高实体的技术;继承:广义的继承有三种实现形式:实现继承、可视继承、接口继承。多态:允许将子类类型的指针赋值给父类类型的指针2.什么是多态?多态有什么作用?答:多态就是将基类类型的指针或者引用指向派生类型的对象。多态通过虚函数机制实现。...原创 2020-04-06 21:49:06 · 354 阅读 · 0 评论 -
数据结构与算法之链表
线性表线性表的定义:一些元素的序列,维持着元素之间的线性关系。实现线性表的基本需要是:(1)能够找到表首元素;(2)从表里的任意元素出发,能找到它之后的下一个元素;基于链接技术实现的线性表称为链表。单链表单链表的特点总结如下:(1)一个单链表由一些具体的表结点组成;(2)每个节点是一个对象,有自己的标识或链接;(3)节点之间通过节点链接建立起单向的顺序结构为了表示链表的结束,通常会...原创 2020-04-03 15:58:48 · 165 阅读 · 0 评论 -
算法与数据结构常见面试知识点
堆栈的区别堆和栈都是一种数据项按序排列的数据结构。栈是先进后出,而堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列,堆的存取是随意的。申请方式和回收方式区别栈(英文名称是stack)是系统自动分配空间的,也是自动回收的。而堆(英文名称是heap)...原创 2020-03-31 00:30:51 · 356 阅读 · 0 评论