博客专栏  >  编程语言   >  java-数据结构与算法

java-数据结构与算法

讲解一些基于java语言的数据结构与算法

关注
2 已关注
47篇博文
  • 前缀树

    1)插入一个字符串到前缀树中    2)查找一个字符串是否在前缀树中存在    3)在前缀树中删除一个自定的字符串    4)查看指定前缀在前缀树中出现过多少次public class C01_Tri...

    2018-03-19 21:16
    19
  • 拼接字符串,使其具有最低字典序

    * 给定一个字符串类型的数组strs[],找到一种拼接方式,使得把所 * 有字 符串拼起来之后形成的字符串具有最低的字典序。 * 贪心策略。import java.util.Arrays; impor...

    2018-03-19 22:51
    20
  • 切金条问题

    一块金条切成两半,是需要花费和长度数值一样的铜板的。比如    长度为20的 金条,不管切成长度多大的两半,都要花费20个铜    板。一群人想整分整块金 条,怎么分最省铜板?    例如,给定数组{...

    2018-03-20 19:59
    33
  • 项目最大收益(贪心问题)

    输入: 参数1,正数数组costs 参数2,正数数组profits 参数3,正数k 参数4,正数m    costs[i]表示i号项目的花费 profits[i]表示i号项目在扣除花    费之后还能...

    2018-03-20 21:20
    37
  • 活动安排问题2

    /** * 活动安排问题 * 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目 * 的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数 * 组,里面 是一个个具体的项目),你来...

    2018-03-20 22:08
    19
  • 归并排序及其应用

    归并排序(英语:Merge sort,或mergesort),是建立在归并操作上的一种有效的排序算法,效率为O(n*log n)} 。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divi...

    2018-03-30 14:33
    16
  • 如何反转单向链表和双向链表( 空间复杂度O(1) )

    反转链表,最简单的就是使用栈了,放进栈里然后拿出来,但这样的操作使用的空间复杂度是O(N)..其实可以做到空间复杂度是O(1)的。public class C08_RevolveLinked1 { ...

    2018-04-01 21:11
    17
  • 两个单链表相交的一系列问题(成环,不成环)

    【题目】 在本题中,单链表可能有环,也可能无环。给定两个    单链表的头节点 head1和head2,这两个链表可能相交,也可能    不相交。请实现一个函数, 如果两个链表相交,请返回相交的   ...

    2018-04-10 23:06
    18
  • 最小的路径和

    /** 给你一个二维数组,二维数组中的每个数都是正数,要求从左上 角走到右下角,每一步只能向右或者向下。沿途经过的数字要累 加起来。返回最小的路径和。 */ public class C02_...

    2018-03-22 21:57
    29
  • 生成图、表示图的一个强大方法

    图的表示一般是可以使用邻接表、邻接矩阵……来表示的,网上大把,这里介绍的是一种更为强大的方式,基本上可以应对所有的关于图的算法,例如拓扑排序、深搜、广搜、Kruskal、Prim、Dijkstra。创...

    2018-03-26 15:26
    37
  • 非递归 宽度优先遍历图(BFS)

    流程:    1,利用队列实现     2,从源节点开始依次按照宽度进队列,然后弹出     3,每弹出一个点,把该节点所有没有进过队列的邻接点放入队 列     4,直到队列变空图的表示和生成见:点...

    2018-03-26 15:31
    21
  • 深度优先遍历图(DFS)

    流程:    1,利用栈实现    2,从源节点开始把节点按照深度放入栈,然后弹出    3,每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈     4,直到栈变空图的表示和生成见:点击打开链接...

    2018-03-26 15:36
    20
  • 拓扑排序算法(TopologySort)

    拓扑排序算法 适用范围:要求有向图,且有入度为0的节点,且没有环    1.将图中的所有节点全部记录到HashMap,入度为零的节点添加到zeroInQueue    2.建立一个集合用来存放结果  ...

    2018-03-26 15:39
    19
  • 最小生成树--Prim算法

    条件:无向图任意一个点作为开端,将该点的所有边加到优先级队列,表示边被解锁,从队列中弹出一条边(必是权重最小的)看该边是否已经标记,如果没标记就标记,表示这条边是需要的,然后将该边的相连的另一个点相连...

    2018-03-26 21:34
    19
  • 最小生成树--Kruskal算法

    条件:无向图从边开始,将所有边加到优先级队列里面,依次弹出,如果该边起点和终点不是在同一个并查集里面,就将该边加到结果集合里面,并且将这两个点合并到同一个并查集里图的表示和生成见:点击打开链接impo...

    2018-03-26 21:42
    21
  • 归并排序

    归并的思想其实不难,就是假设有两个有序数组a,b,现在需要把它合并成一个有序的数组,要是使用快排或者其他的排序(除了桶排序)理论值就达到了O(N*logN)了,假如我建立一个数组c,长度是他们两个数组...

    2018-03-18 19:09
    28
  • 认识并查集结构

    并查集是1964年别人脑补的一个算法,到证明结束是1989年,这个证明也是够漫长的。并查集的效率非常高,当有N个数据的时候,假设查询次数到了N之后,其时间复杂度仅为O(1)!!并查集使用哈希是来做的,...

    2018-03-19 13:18
    22
  • 如何判断一棵二叉树是否平衡

    平衡二叉树就是AVL树,定义也很简单,就是一棵树的每一个节点的左右子树高度相差不超过1。AVL树具有数组和链表的优点,方便查找也方便插入,时间复杂度仅为O(height),height就是树的高度,所...

    2018-03-12 21:28
    27
  • 怎么计算一棵完全二叉树的节点个数

    题目:已知一棵完全二叉树,求其节点的个数要求:时间复杂度低于O(N),N为这棵树的节点个数完全二叉树的概念就不多叙述了。讲讲思路:题目的要求是时间复杂度低于O(N),所以遍历的方式就不用考虑了,根据完...

    2018-03-13 22:00
    54
  • 设计RandomPool结构

    设计RandomPool结构    【题目】 设计一种结构,在该结构中有如下三个功能:    insert(key):将某个key加入到该结构,做到不重复加入。    delete(key):将原本在...

    2018-03-15 20:49
    58
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部