算法/数据结构
算法与数据结构
七秒钟笔记
随时学习,随时记录
展开
-
【数据结构】c++优先队列priority_queue及应用
文章目录概述应用leetcode题215:数组中的第K个最大元素leetcode题347 前k个高频元素概述c++ STL中的优先队列与普通队列相似,需要头文件#include <queue>优先队列可以看成进行按优先级排列的队列,它本质是一个堆实现的。优先队列的定义形式为:priority_queue<Type, Container, Functional>举例://大顶priority_queue <int,vector<int>,less<原创 2020-05-20 18:17:04 · 416 阅读 · 0 评论 -
【算法题解】动态规划相关典型算法题
文章目录青蛙跳台阶问题连续子数组的最大和三角形最小路径和其它例子所谓动态规划就是用之前问题的答案来推到当前问题的答案。解动态规划问题的步骤:1.问题拆解,寻找规律与联系2.状态定义3.推导递推方程4.具体实现(注意边界条件与特殊情况)下面看具体实例:青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同...转载 2020-04-15 16:13:22 · 245 阅读 · 0 评论 -
【数据结构】最大堆/最小堆 及其在c++算法库函数
文章目录1.原理2.在c++算法库中的使用2.1介绍2.2使用案例:3.最大(小)堆实例应用参考1.原理最大最小堆的定义:它是一颗完全二叉树,它可以是空树中结点的值总是不小于(不大于)其孩子结点的值每一个结点的子树也是一个堆当父结点的键值总是大于或等于任何一个子结点的键值时为:最大堆。当父结点的键值总是小于或等于任何一子节点的键值时:最小堆.例如下图就是一个最大堆。最大堆的每一...原创 2020-04-14 19:47:30 · 3784 阅读 · 0 评论 -
【算法题解】线性表相关
文章目录从尾到头打印链表排序链表的合并反转链表输出单链表倒数第 K 个节点两个链表的第一个公共节点删除链表中节点,要求时间复杂度为O(1)从尾到头打印链表来源:剑指offer 牛客网有三种思路:第一就是利用栈先入后出的特性完成;第二就是将链表元素顺序存下来,然后进行数组翻转;第三是利用递归。1.栈思路:class Solution {public: vector<i...原创 2020-03-29 13:25:24 · 180 阅读 · 0 评论 -
[数据结构] 时间复杂度相关问题
1已知一个数组a的长度为n,求问下面这段代码的时间复杂度:for (i=0,length=1;i<n-1;i++){ for (j = i+1;j<n && a[j-1]<=a[j];j++){ //a[j-1]<=a[j]有序 if(length<j-i+1) length=j-i+1; }}实际上是求a中有序...原创 2020-02-01 17:49:06 · 2396 阅读 · 0 评论 -
【数据结构】AVL树_红黑树_B树与B+树
参见:添加链接描30张图带你彻底理解红黑树述转载 2019-11-22 16:43:31 · 144 阅读 · 0 评论 -
[数据结构] 二叉树及其编码实现
1.几个易混淆的概念树:节点的有限结合。如下:二叉树:所有结点的度都小于等于2的树。如下:完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。如下:完全二叉树的特性完全二叉树是效率很高的数据结构,具有广泛的应用。完全二叉树是一种特殊的二叉树,每一个元素与其子节点(孩子)有非常好的对应关系。对于编号为i的元素,有如下关系:(1)若...原创 2019-11-21 22:38:56 · 2425 阅读 · 0 评论 -
[数据结构] 队列及其编码实现
1 普通队列与环形队列队列的特点:先入先出(FIFO)例子: 火车站买票时,队头队尾。售票员从头开始卖票,先到的人先买到票就可以离开。分类:普通队列与环形队列1.1 普通队列普通队列的添加元素较为简单,直接队列尾后移;普通队列的删除元素分为两种:(1)队列头位置不变,后面所有元素前移一位(浪费时间)(2)队列头直接后移一位(浪费内存)1.2 环形队列将队列首尾相连,即节省时间...原创 2019-10-29 10:58:18 · 221 阅读 · 0 评论 -
[数据结构] 栈的应用(进制转换)
案例来自慕课网https://www.imooc.com/u/1349694/courses?sort=publish十进制转换其他进制使用的是短除法:不停将原数除以进制,保留余数;然后商继续除以进制保留余数,直到商为0。再将余数从倒写即可得到进制转化。如上图,对于十进制数1348,进行除8取余,将每次的余数 4 0 5 2 入栈,然后从栈顶开始打印。即可得到八进制数为2504。接下来是代...原创 2019-01-22 10:07:14 · 582 阅读 · 0 评论 -
[数据结构] 线性表及其编码实现
线性表可以分为顺序表(数组描述)与链表(链式描述)1 顺序表(数组描述)顺序表的特点是直接前驱,直接后继,数据之间是连续存储的。定义一个顺序表的类,看看它需要哪些成员:List.h#ifndef LIST_H#define LIST_Hclass List{public: List(int size); //构造函数 传入线性表长度 ~List(); ...原创 2019-10-21 10:07:25 · 218 阅读 · 1 评论 -
[数据结构] 通用栈的写法以及案例(使用template模板)
通用栈的写法以及案例案例来自慕课网https://www.imooc.com/u/1349694/courses?sort=publish首先是通用栈的写法://MyStack.h#ifndef MYSTACK_H#define MYSTACK_H#include &amp;amp;lt;iostream&amp;amp;gt;using namespace std;template &amp;amp;lt;typename ...原创 2019-01-22 09:09:14 · 763 阅读 · 0 评论