![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法(java实现)
文章平均质量分 66
算法
林小果呀
主要记录个人的学习笔记,有空也会发发技术分享类文章
展开
-
Set接口
Set接口继承自Collection接口,表示一组不重复的元素。Set接口的特点是不允许包含重复的元素,且没有定义元素的顺序。原创 2024-03-10 15:28:14 · 645 阅读 · 0 评论 -
LeetCode买卖股票的最佳时机
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。原创 2024-03-05 19:02:01 · 573 阅读 · 0 评论 -
DFS排列组合问题
本题与上一题的区别在于结果中会出现重复数字,因此我们在恢复元素的时候就不能直接调用remove方法(因为remove方法删除的是从前往后找到的一个元素,但我们需要删除的元素在列表尾部),需要自己写一个rm方法,从后向前找元素并删除。如果是组合题,结果是无序的,我们需要从i或i+1开始遍历。本题与上一题的区别在于数组里含有重复数字,我们需要先将数组进行排序,将重复数字放在一起,这样我们就不会将结果相同但顺序不同的数组当成不同的结果放入结果集。如果至少一个数字的被选数量不同,则两种组合是不同的。原创 2024-02-25 03:47:36 · 750 阅读 · 0 评论 -
快速选择算法
给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。原创 2024-02-21 20:00:35 · 349 阅读 · 0 评论 -
java实现红黑树
红黑树是一种自平衡二叉查找树,其中每个节点都有一个颜色属性,颜色为红色或黑色。它的特性保证了树在插入和删除操作后仍然保持大致的平衡,使得查找操作能够在对数时间内完成。原创 2024-01-20 02:32:25 · 438 阅读 · 0 评论 -
java数据结构与算法:队列
是指当队列为空时,消费资源是否祖师;当队列满时,插入数据是否阻塞单向队列可被用作FIFO(先进先出)或LIFO(后进先出)双向队列可以从队列的两头分别进行入队和出队操作判断是否有界是在看队列初始化时是否指定容量推荐使用有界队列,因为无界队列可能产生OOM(out of memory) 内存溢出问题用顺序表实现的称为顺序队列用链表实现的称为链队列加锁的开销是巨大的,在高并发场景下,无锁的性能一般是有锁的数倍无缓存,按优先级入队,延时入队等。原创 2024-01-08 22:17:39 · 802 阅读 · 0 评论 -
打 家 劫 舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。原创 2024-02-06 16:51:38 · 305 阅读 · 0 评论 -
Catalan数
Catalan数是一种组合数学的计数方法,常用于解决一些计数问题,例如括号匹配问题、二叉树的节点问题等。**由以上推导可得Cn = (Cn-1 * C0) + (Cn-2 * C1) + …+ (C0 * Cn-1) **将n个节点可组成的二叉搜索树记作Cn , C0 = 1, C1 = 1, C2 = 2;代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。返回满足题意的二叉搜索树的种数。个节点组成且节点值从。原创 2024-02-03 11:04:23 · 385 阅读 · 0 评论 -
零钱兑换问题
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。原创 2024-01-26 13:35:23 · 201 阅读 · 0 评论 -
哈夫曼树(Huffman)
什么是编码?简单说就是建立【字符】到【数字】的对应关系,如下面大家熟知的 ASC II 编码表,例如,可以查表得知字符【a】对应的数字是十六进制数【0x61】注:一些直接以十六进制数字标识的是那些不可打印字符传输时的编码现在希望找到一种最节省字节的传输方式,怎么办?假设传输的字符中只包含 a,b,c 这 3 个字符,有同学重新设计一张二进制编码表,见下图现在还是传递 abbccccccc 这 10 个字符不行,因为解码会出现问题,因为 10 会被错误的解码成 ba,而不是 c怎么解决?原创 2024-01-25 10:06:10 · 770 阅读 · 0 评论 -
数据结构与算法:图
图是由顶点(vertex)和边(edge)组成的数据结构,例如fill:#333;color:#333;color:#333;fill:none;ABCD该图有四个顶点:A、B、C、D 以及四条有向边,有向图中,边是单向的。原创 2024-01-21 23:35:58 · 894 阅读 · 0 评论 -
Java中的AVL树
int key;int height;每个节点包含一个键、一个值、一个左子节点、一个右子节点以及一个表示节点高度的字段。原创 2024-01-17 02:56:33 · 485 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)
二叉搜索树是一种特殊的二叉树,它的每个节点的键都大于其左子树中的任意节点的键,而小于右子树的任意节点的键。原创 2024-01-16 09:44:46 · 525 阅读 · 0 评论 -
二叉树简介
二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。原创 2024-01-15 20:08:37 · 600 阅读 · 0 评论 -
大顶堆(Max Heap)
int size;在这里,我们定义了两个成员变量。array是用来存储堆中的元素的数组,size是用来表示当前堆的大小。原创 2024-01-15 09:18:53 · 487 阅读 · 0 评论 -
优先级队列(Priority Queue)
例如,插入和删除元素可能需要移动大量的元素,特别是在最坏的情况下,这可能需要移动整个数组。因此,这种实现的时间复杂度可能会达到O(n),其中n是队列的大小。使用堆实现的优先级队列可以在O(log n)的时间复杂度内插入和删除元素,这比基于数组的实现更有效率。堆是一种特殊的完全二叉树,其中每个节点的值都大于或等于其子节点的值(最大堆)或小于或等于其子节点的值(最小堆)。优先级队列是一种特殊的队列,其中的元素不是按照进入队列的顺序出队,而是按照元素的优先级出队。在优先级队列中,元素的优先级最高的将会首先出队。原创 2024-01-15 04:46:11 · 517 阅读 · 0 评论 -
HashMap集合万字源码详解
示例:在Java8 之前 HashMap 由 数组+链表 数据结构组成,主要有以下不足之处:针对以上情况,自从java8开始引入了红黑树来进行优化。新版的HashMap 由 数组+链表 +红黑树数据结构组成,当链表长度大于阈值(或者红黑树的边界值,默认为 8)并且当前数组的长度大于64时,此时此索引位置上的所有数据改为使用红黑树存储。特点:存取无序的键和值位置都可以是null,但是键位置只能是一个null键位置是唯一的,底层的数据结构控制键的jdk1.8前数据结构是:链表 + 数组 jdk1.8之后是 :原创 2024-01-11 22:32:24 · 1117 阅读 · 1 评论 -
java数据结构与算法:双链表 LinkedList
【代码】java数据结构与算法:双链表 LinkedList。原创 2024-01-08 00:31:06 · 608 阅读 · 0 评论 -
java数据结构与算法:顺序表SequentiaList
【代码】java数据结构与算法:顺序表SequentiaList。原创 2024-01-08 00:32:16 · 611 阅读 · 0 评论 -
java数据结构与算法:栈
【代码】java数据结构与算法:栈。原创 2024-01-08 00:37:48 · 475 阅读 · 0 评论 -
java数据结构与算法: 稀疏矩阵
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律,则称改矩阵为稀疏矩阵。反正则为稠密矩阵。原创 2024-01-08 00:37:04 · 409 阅读 · 0 评论 -
java数据结构与算法:单链表 SinglyLinkedList
【代码】java数据结构与算法:单链表 SinglyLinkedList。原创 2024-01-08 00:25:19 · 551 阅读 · 0 评论