数据结构与算法
文章平均质量分 52
数据结构与算法
菠萝开方
这个作者很懒,什么都没留下…
展开
-
最小生成树:Kruskal算法
题目来源于:华为提前批机考20210630 求图是否连通,如果连通则求出最小权值和 (leetcode hard)本题难点:图结构的构建最小生成树的算法原创 2021-08-21 11:18:09 · 191 阅读 · 0 评论 -
NC158 有向无环图的单源最短路径问题:Dijkstra算法
描述在一个有向无环图中,已知每条边长,求出1到n的最短路径,返回1到n的最短路径值。如果1无法到n,输出-1示例1输入:5,5,[[1,2,2],[1,4,5],[2,3,3],[3,5,4],[4,5,5]]返回值:9备注:两个整数n和m,表示图的顶点数和边数。一个二维数组,一维3个数据,表示顶点到另外一个顶点的边长度是多少每条边的长度范围[0,1000]。注意数据中可能有重边#include <vector>#include <iostream>#in原创 2021-07-24 15:53:54 · 621 阅读 · 0 评论 -
拓扑排序:LC 207. 课程表 & 210. 课程表 II
207. 课程表原创 2021-07-06 16:09:20 · 319 阅读 · 0 评论 -
01 背包问题
有 n 种物品,物品 j 的体积为vjv_{j}vj,价值为 wiw_{i}wi,有一个体积限制 V。每种物品只有 1 个,只有选或者不选,而没有选几个的问题,此问题称为 01 背包问题。一个朴素的想法是,只考虑价值尽量大,状态设计是单串线性 DP 中最经典的状态设计,如下:dp[i] 表示考虑区间 [0..i] 里的物品可以取得的最大价值...原创 2021-07-06 10:12:21 · 95 阅读 · 0 评论 -
C++:DFS求最优路径
vivo游戏中心的运营小伙伴最近接到一款新游戏的上架申请,为了保障用户体验,运营同学将按运营流程和规范对其做出分析评估。经过初步了解后分析得知,该游戏的地图可以用一个大小为 n*n 的矩阵表示,每个元素可以视为一个格子,根据游戏剧情设定其中某些格子是不可达的(比如建筑、高山、河流或者其它障碍物等),现在请你设计一种算法寻找从起点出发到达终点的最优抵达路径,以协助运营小伙伴评估该游戏的可玩性和上手难度。输入描述:第一行表示矩阵大小 n,5 <n < 10000第二行表示起点和终点的坐标第原创 2021-07-05 20:35:09 · 606 阅读 · 0 评论 -
算法:排序
冒泡排序 bubble sort选择排序 selection sort插入排序 insertion sort归并排序 merge sort快速排序 quick sort随机快速排序 random quick sort技术排序 counting sort基数排序 radix sort原创 2021-04-29 16:22:15 · 87 阅读 · 0 评论 -
数据结构:栈与队列
栈ADT接口入栈与出栈:栈其中的数据元素按线性的逻辑次序排序,故也可定义首、末元素。操作范围仅限于栈的某一特定端,禁止操作的另一端,称作盲端。栈中可操作的一端更多地称作栈顶(stack top),另一无法直接操作的盲端被称作栈底(stack bottom)。作为抽象数据类型(ADT),栈所支持的操作接口可归纳为操作接口功能size()报告栈的规模empty()判断栈是否为空push(e)将e插至栈顶pop()删除栈顶对象top()引用栈顶对象原创 2021-03-21 15:30:50 · 114 阅读 · 0 评论 -
Java数据结构:双向链表Double Linked List基础笔记
双链表介绍原创 2019-12-13 14:12:36 · 425 阅读 · 0 评论 -
Java数据结构:单链表Single Linked List基础笔记
单链表介绍应用实例原创 2019-12-12 18:05:49 · 158 阅读 · 0 评论 -
Java数据结构:数组模拟的队列(Queue)和环形队列(Circle Queue)
一、应用场景在银行排队进行服务的时候,通常会使用排队叫号的方法。如下图所示,四个小方块分别代表四个业务员,圆圈代表等待服务的顾客,圆圈中的数字代表客户的编号,号码大小根据客户排队顺序给出:二、队列介绍队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 示意图:(使用数组模拟队列示意图)三、数组模拟队列...原创 2019-11-26 18:52:37 · 228 阅读 · 0 评论 -
Java数据结构:稀疏数组(Sparse Array)的创建和文件存取
稀疏数组Sparse Array一、实际需求五子棋是一种双人对弈的策略性棋类游戏,在我们用Java编写五子棋程序时,我们会设法实现存盘退出和续上盘这样的一些功能。存盘退出,实际上就是要求我们对当前的棋盘进行记录并且写入到文件里面,这样选择续上盘的功能时才能从文件当中读档,恢复到上次保存的棋局当中。我们在存储如左图所示的棋盘时,通常会选择一个二维数组,如右图所示。但是在大多数情况下该...原创 2019-11-21 15:51:55 · 351 阅读 · 0 评论