![](https://img-blog.csdnimg.cn/20191101183710764.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构
文章平均质量分 72
基础算法
x.h.z
build yourself
展开
-
leetcode背包问题总结
背包问题总结原创 2022-08-28 14:03:05 · 1051 阅读 · 0 评论 -
leetcode上树的一些算法
#include <iostream>#include <stack>#include <vector>#include <algorithm>#include <deque>using namespace std;#define error(format, ...) printf(format, __VA_ARGS__)...原创 2019-12-04 23:30:05 · 156 阅读 · 0 评论 -
操作系统(经典同步问题)
王道上操作系统几大经典同步算法生产者与消费者问题分析:整个环境由生产者,消费者,缓冲区(临界区)组成,这种题明白以下几点1)生产者与消费者对缓冲区的访问是互斥的,即某段时间内只允许二者其中一个对缓冲区进行访问2)生产者与消费者之间也存在同步关系,即当且只有缓冲区不空时,消费者才允许从缓冲区中取数据,当且只有缓冲区不满时,才允许生产者往缓冲区放数据//算法伪代码semaphore...原创 2019-10-31 20:43:37 · 1289 阅读 · 0 评论 -
广义表
引用了一位博主的博客,算是弄懂了https://blog.csdn.net/darkbus111/article/details/78526108转载 2019-10-28 19:24:05 · 208 阅读 · 0 评论 -
数据结构(图)HD201801
把一件事做好,做简单,就是对自己最好的一份靠赏.今天把建图的代码自己模拟了一下,是使用领接表写的,产出量太低,明天来写图的两个遍历算法吧.#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;#define MAXVERTEXNUM 6 //图的顶点数...原创 2019-10-28 17:06:55 · 205 阅读 · 0 评论 -
递归逆置字符串
#include <iostream>#include <cstdio>void convert(char *a, int n){ if (n / 10) { convert(a + 1, n / 10); } *a = (n - (n / 10) * 10) + 48;}int main(int argc, cha...原创 2019-10-24 23:47:17 · 181 阅读 · 0 评论 -
快速排序&&归并排序
#include <iostream>#include <stdio.h>using namespace std;#define LEN 8class SortAlgo{public:int* arr;int size;SortAlgo(int a[],int len){this->arr = new int[len];t...原创 2019-07-26 22:43:16 · 119 阅读 · 0 评论 -
KMP算法
于是,我的每个梦里都会有你#include <iostream>#include <string>using namespace std;int* getNext(string s){ if(s.size()<=1){ return new int[1]{-1}; } int len = s.size(); ...原创 2019-06-22 16:45:42 · 1760 阅读 · 0 评论 -
算法:双链表的实现
冬至到了,这几天在复习,对于数据结构,只是重新温故了一下链表的知识,在老朱的帮助下,算是对链表有个大致的了解双链表的实现//双链表操作//需要借助两个标记结点,一个作为头结点,一个作为尾结点import java.util.ArrayList;import java.util.LinkedList;public class MyLinklist{ private static ...原创 2018-12-23 21:11:50 · 267 阅读 · 0 评论 -
算法:图的遍历(bfs+dfs)
深度优先遍历这阵子有关深度优先搜索的题见的比较多,所以趁今天脑袋清醒,想来总结一下图深度搜索算法的实现过程城市的遍历给定城市的数量n,城市编号(1~n),城市之间的连接情况,起点城市编号,遍历所有城市图是一种经典的数据结构,倘若对图进行搜索,最直接的方法就是使用回溯法,为了防止遍历重复的城市,需要开一个数组用来维护已访问的城市,//递归搜索法 static void dfs(i...原创 2019-03-07 23:03:07 · 526 阅读 · 0 评论 -
算法:二叉树的三种遍历法
三种遍历的基本思想分别是:先序遍历:根左右中序遍历:左根右后序遍历:左右根code如下//遍历二叉树//1.前序遍历//递归法void preTraverseTree(TreeNode* root){ if(root==nullptr){ return; } cout<<root->val; preTraverseTree(root->left...原创 2019-04-29 21:34:02 · 767 阅读 · 0 评论 -
算法:求二叉树的高度
问题引入(树之高度)输入描述对于一个二叉树,输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号输出描述输出树的高度,为一个整数测试用例输入50 10 21 31 4输出3解决方法使用递归法求树的高度int getdeep_1(treeType...原创 2018-12-20 20:30:23 · 5259 阅读 · 1 评论 -
算法:堆排序
堆排序最近重温了经典的堆排序的算法,堆是一种优先队列,堆排序是基于完全二叉树结构的,由选择排序优化而来,常数时间内最坏最好情况时间复杂度都是O(nlogn),而堆又分为两种,分别是大顶堆和小顶堆,由于一般排序算法都是实现序列升序化,故堆排序在一般教材里都是以小顶堆形式出现,算法实现步骤分为三步:建堆,调整堆,输出堆顶元素,废话不多说,上代码public class 堆 { public st...原创 2019-03-14 23:46:03 · 161 阅读 · 0 评论 -
算法:最短路算法
计算最短路的三大算法常见计算最短路的题型模板:输入n代表结点数,输入m代表边数,接下来m行,每行三个数,分别输入n1,n2,k代表结点n1到结点n2的单向路径长度为kFloyd算法模板基于动态规划思想,核心在于,为了计算两个结点i,j之间的最短路,需要引入中转结点k进行进一步比较,来对领接矩阵进行进一步更新,状态转移方程为map[i][j]=min(map[i][k]+map[k][j...原创 2019-03-16 13:31:00 · 652 阅读 · 0 评论 -
算法:最大算式问题
蓝桥杯(最大算式)第一次看到这个题目,也是无从下手,但是初看一定是用dp动态规划没错,在借鉴了许多优质博客和自己实操之后,我对整个过程也有了自己的理解。解法首先我们可以这样子想,我们把前n个数中使用k个乘号来计算出最大值看作是一个过程,注意这里n的范围是(1-N),k的范围是(1-K),这样,我们每次进行一次计算最大值,都是解出全局最优解的一个子过程,并且我们可以使用这些计算出的子问题最优解...原创 2019-03-17 22:05:33 · 505 阅读 · 0 评论 -
算法:(BFS)迷宫寻路算法
行远必自迩 登高必自卑来自蓝桥杯oj解法这一题属于典型的迷宫搜索类题,刚入手时我也是一脸茫然,但是仔细思考了一晚上,还是勉强的解决了,这道题属于经典的BFS搜索题,解决的核心在于,如何找到迷宫出口,还有如何存储路径解法1:BFS+路径存储作为图论中经典的搜索算法之一,BFS算法搜索路径的特点是"层层搜索",映射到这个题目上,给我的理解就是,使用BFS这个特点,一旦我们搜索到终点,好吧,...原创 2019-03-21 21:19:05 · 5682 阅读 · 1 评论 -
算法:0-1背包问题
今天重温了一下动态规划之中经典问题---------01背包问题--------下面,我就来分析求解01背包问题的整个过程经典01背包的问题是:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?注意,这里的物品我们只考虑它们各自的重量和价值,物品个数都是1个,也就是,在01背包问题中,对于每个物品,我们要不就放进背包,要不就不放解法...原创 2019-03-19 00:12:23 · 304 阅读 · 0 评论 -
算法:最小生成树(Kruscal && Prim)
原创 2019-03-23 17:19:18 · 522 阅读 · 0 评论 -
算法:Morries法遍历二叉树
今天看了下左神讲的有关morries遍历二叉树的视频(morries遍历,学术上就是线索化遍历二叉树),这种遍历方法没有用到其他辅助数据结构,只使用了叶子结点的空闲指针,节省了许多不必要的开销,同时也加快了遍历的时间效率,下面我来总结核心要点(步骤)初始化线索结点,名字叫做cur,指向树的根结点如果cur没有左孩子,cur右移,cur指向cur的右孩子结点(cur = cur->ri...原创 2019-06-13 00:08:12 · 536 阅读 · 0 评论 -
算法:数字的全排列(递归)
(8.16)数字的全排列,通过递归的实现对于数字的全排列问题,相比于使用穷举法来说,通过递归法来解决可以大大减少算法的时间复杂度与空间复杂度,使用递归算法的好处即是:抛给程序一个执行条件,一个约束条件(结束递归过程),程序便可自己完成所有过程。输入一个数字n,使用递归算法输出1~n所有的排列/*全排列问题*/#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;using...原创 2018-08-16 19:51:28 · 1658 阅读 · 1 评论