
wen~Structure
文章平均质量分 92
*南夕~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划(常见背包问题)
01背包问题问题简述:在 N 件物品中选中若干件放入背包中,在不超过背包体积 V 的情况下,使得背包的价值最大条件:每个物品只能选一次每个物品的状态只有选或者不选两种状态举个例子:有 N 件商品和体积为 V 的背包,物品的体积和价值 vi 和 wi,(i表示第几件物品)求解将哪些物品放进去使得在不超过背包容量时的价值最大思路:定义状态表达式dp[i][j]表示在只有前i个物品的状态下,体积为j的的情况下的背包的最大价值,则当前物品就存在选或者不选两种状态,不选:dp[i][j] = dp[i -原创 2020-10-24 19:24:25 · 418 阅读 · 0 评论 -
优先级队列(PriorityQueue)
队列就是一种先进先出的数据结构,优先级队列就是在队列的基础上增加了对其中的数据增加了优先级这种情况,在某些特定的情况下,我们需要对优先级高的数据进行出队列。优先级队列(PriorityQueue)优先级队列在集合框架中的位置,从图中,可以清楚的知道,PriorityQueue是一个类,并且继承Queue这个接口对于这种数据结构,我们需要注意的是插入的数据必须要可以进行大小的比较,不能插入无法比较大小的对象,否则会抛出ClassCastException异常不能插入null对象,否则会抛出Nul原创 2020-07-13 10:30:18 · 706 阅读 · 0 评论 -
理解堆的操作并实现优先级队列
堆的操作,最主要的就是向调整和向下调整,用这个两个操作来保证堆的性质,最主要的应用有两个。一个是排序算法——堆排序,另一个就是数据结构——优先级队列什么是堆?堆其实就是一个完全二叉树,但是它存储在数组里面,利用数组的下标来进行操作结点,数组和堆就是相对应的性质最大堆:每个结点都大于或者等于其两个子结点最小堆:每个结点都小于或者等于其两个子结点向上调整和向下调整这两种操作都是为了维护最大堆或者最小堆的的结构这里倘若是最大堆向上调整:某个结点的值大于它的父结点,这时应该将父结点与这个结点进行原创 2020-06-25 11:51:58 · 493 阅读 · 0 评论 -
顺序表和链表的区别
顺序表:顺序表是采用顺序的存储结构在计算机内存中存储方式,是将数据元素放在一段物理地址连续的内存空间中,逻辑和物理相统一。优点:1)空间的利用率较高,存储空间连续2)支持随机访问,通过下标来进行存储,时间复杂度为O(1)缺点:1)插入和删除的效率较低,需要遍历整个数组。时间复杂度为O(n)2) 增容的代价比较大。增容需要申请新的空间,拷贝数组,释放旧空间,这些操作都有不小的消耗,增容一般是呈2倍的增长,就会存在空间的浪费。插入和删除的时间复杂度为O(n),查找的时间复杂度为O(1)链表:单链原创 2020-06-20 17:01:37 · 1055 阅读 · 0 评论 -
对HashMap的认识了解
HashMap是Map的一个实现类,Map没有继承自Collection。关于Map1、 Map是一个接口,不能进行实例化,如果要进行实例化,只能通过它的两个实现类TreeMap和HashMap2、 Map中存放键值对的Key是唯一的,value是可以重复的3、在Map中插入键值对时,Key不能为null,否则会报出NullPointerException异常,但是value可以为nul...原创 2020-05-03 09:41:33 · 353 阅读 · 0 评论 -
二叉树的非递归遍历(先序 后序 中序)
在上一篇中,我们已经说过先序、中序、后序的递归实现非递归的遍历要怎么实现????先序和中序则较为简单,采用栈的结构(先进后出),先序是在入栈时将其数据域读出来,中序则是在出栈是将其数据域读出注意的是在入栈和出栈的时候要判断栈的情况//先序遍历二叉树(非递归):采用栈的形式void PreOrder_1(Node *root) { if (root==NULL) { retur...原创 2019-12-02 15:37:07 · 161 阅读 · 0 评论 -
数据结构——图
图是一种比树更复杂的数据结构,我们知道在数形结构中,数据元素之间的关系是一对多的,是有着上下层的关系,而图中,数据元素之间的关系是多对多的,不存在上下层的关系,因此,我们可以将树看做是图的一种特例。接下来,我们来介绍图的相关知识图1.1定义:网状的数据结构,是由一个顶点的有穷的非空集V(G)和一个边的集合E(G)组成,通常记作G=(V,E),1.2种类无向图:所有的边不带方向,边...原创 2019-11-20 19:34:06 · 346 阅读 · 0 评论 -
复杂链表的复制(java)
复杂链表复制,它的难点在于随机引用的复制,并且随机引用的地址不能确定解决方法:将所有的新,旧节点都串起来处理随机引用拆分链表结点: class Node { public int val; public Node next; public Node random;}1.串链表代码如下: Node cur=head; while(...原创 2019-11-13 09:39:29 · 227 阅读 · 0 评论 -
树与二叉树
1.树1.1概念:树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树。1.2树的特点:1.每个结点有零个或多个子结点;2.没有父结点的结点称为根结点;3.每一个非根结点有且只有一个父结点;4.除了根结点外,每个子结点可以分为多个不相交的子树1.3两种树的术语有序树:一棵树中结点的各子树从左到右...原创 2019-10-14 21:18:06 · 139 阅读 · 0 评论 -
无头单链表的基本操作(Java)
链表:链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的其实呢,链表的结构非常多样,分为以下情况单向 双向无头 有头循环 非循环这次呢,先说无头单向非循环链表链表的实现://结点类class ListNode{ public int data; public ListNode next; public L...原创 2019-10-28 20:44:44 · 424 阅读 · 0 评论