- 博客(30)
- 收藏
- 关注
原创 Backtracking Algorithm
似乎 ArrayList 作为 stack 性能高一些,见下面代码,但是这道题在 leetcode 上执行时间不稳定,相同代码都会有较大时间差异(15ms vs 9ms)与之前的零钱兑换问题其实是一样的,只是。这道题更类似于 77 题,区别在于。
2025-07-19 23:30:00
270
原创 Dynamic-Programming
如果终点是 (1,1) 呢,它的走法是从它的上方走下来,或者从它的左边走过来,因此走法 = (0,1) + (1,0) = 2种。如果终点是 (2,1) 呢,它的走法是从它的上方走下来,或者从它的左边走过来,因此走法 = (1,1) + (2,0) = 3种。注意:内层循环需要倒序,否则 dp[j - item.weight] 的结果会被提前覆盖。本质上是完全背包问题,把钢条总长度看作背包容量,切分后的钢条看作物品。如果终点是 (1,0) 那么也只有一种走法。如果终点是 (0,1) 那么只有一种走法。
2025-07-19 12:45:00
1003
原创 Greedy Algorithm
称之为贪心算法或贪婪算法,核心思想是贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。这种算法通常用于求解优化问题,如最小生成树、背包问题等。几个贪心的例子。
2025-07-19 07:00:00
1055
原创 图 -(图是由顶点(vertex)和边(edge)组成的数据结构)
图是由顶点(vertex)和边(edge)组成的数据结构,例如ABCD该图有四个顶点:A、B、C、D 以及四条有向边,有向图中,边是单向的如果是无向图,那么边是双向的,下面是一个无向图的例子ABCD度度是指与该顶点相邻的边的数量ABCDEF例如上图中有向图中,细分为入度和出度,参见下图ABCDEFA (2 out / 0 in)B、C、E (1 out / 1 in)D (2 out / 2 in)F (0 out / 2 in)权边可以有权重,代表从源顶点到目标顶点的距离、费用、时
2025-07-18 22:45:00
974
原创 排序算法 -(11种排序算法)
其中Arrays.sortJDK 7~13 中的排序实现JDK 14~20 中的排序实现要点以数组 3、2、1 的冒泡排序为例,第一轮冒泡第二轮冒泡未排序区域内就剩一个元素,结束优化手段:每次循环时,若能确定更合适的右边界,则可以减少冒泡轮数以数组 3、2、1、4、5 为例,第一轮结束后记录的 x,即为右边界非递归版代码2) 选择排序要点以下面的数组选择最大值为例非递归实现3) 堆排序要点:建堆交换,下潜调整代码4) 插入排序要点例代码5) 希尔排序要点下图演示了
2025-07-17 12:00:00
556
原创 Leetcode 股票问题
对于天数 n = 6,最多进行 3 次交易,如果此时 k > 3,意味着不限次交易。对于天数 n = 7,最多进行 3 次交易,如果此时 k > 3,意味着不限次交易。
2025-07-17 00:15:00
247
原创 B 树 -(一种高效存储和查询数据的方法)
B树(B-Tree)结构是一种高效存储和查询数据的方法,它的历史可以追溯到1970年代早期。B树的发明人Rudolf Bayer和Edward M. McCreight分别发表了一篇论文介绍了B树。这篇论文是1972年发表于《ACM Transactions on Database Systems》中的,题目为"Organization and Maintenance of Large Ordered Indexes"。
2025-07-16 12:15:00
692
原创 红黑树 -(一种自平衡二叉查找树)
红黑树是一种自平衡二叉查找树,最早由一位名叫Rudolf Bayer的德国计算机科学家于1972年发明。然而,最初的树形结构不是现在的红黑树,而是一种称为B树的结构,它是一种多叉树,可用于在磁盘上存储大量数据。在1980年代早期,计算机科学家Leonard Adleman和Daniel Sleator推广了红黑树,并证明了它的自平衡性和高效性。从那时起,红黑树成为了最流行的自平衡二叉查找树之一,并被广泛应用于许多领域,如编译器、操作系统、数据库等。
2025-07-15 23:30:00
1262
原创 AVL 树
AVL 树是一种自平衡二叉搜索树,由托尔·哈斯特罗姆在 1960 年提出并在 1962 年发表。它的名字来源于发明者的名字:Adelson-Velsky 和 Landis,他们是苏联数学家,于 1962 年发表了一篇论文,详细介绍了 AVL 树的概念和性质。在二叉搜索树中,如果插入的元素按照特定的顺序排列,可能会导致树变得非常不平衡,从而降低搜索、插入和删除的效率。为了解决这个问题,AVL 树通过在每个节点中维护一个平衡因子来确保树的平衡。平衡因子是左子树的高度减去右子树的高度。
2025-07-15 12:45:00
1031
原创 二叉搜索树
二叉搜索树最早是由Bernoulli兄弟在18世纪中提出的,但是真正推广和应用该数据结构的是1960年代的D.L. Gries。他的著作《The Science of Programming》中详细介绍了二叉搜索树的实现和应用。在计算机科学的发展中,二叉搜索树成为了一种非常基础的数据结构,被广泛应用在各种领域,包括搜索、排序、数据库索引等。随着计算机算力的提升和对数据结构的深入研究,二叉搜索树也不断被优化和扩展,例如AVL树、红黑树等。int key;
2025-07-15 06:30:00
1303
原创 阻塞队列 -(单锁实现、双锁实现)
之前的队列在很多场景下都不能很好地工作,例如因此我们需要解决的问题有有同学对线程安全还没有足够的认识,下面举一个反例,两个线程都要执行入队操作(几乎在同一时刻)执行的时间序列如下,假设初始状态 tail = 0,在执行过程中由于 CPU 在两个线程之间切换,造成了指令交错糟糕的是,由于指令交错的顺序不同,得到的结果不止以上一种,宏观上造成混乱的效果。
2025-07-13 23:45:00
667
原创 优先级队列 -(无序数组实现、有序数组实现、堆实现)
例2 - 完全二叉树(Complete Binary Tree)特点:最后一层可能未填满,靠左对齐。例1 - 满二叉树(Full Binary Tree)特点:每一层都是填满的。题目中要从小到大排列,因此选择用小顶堆来实现,自定义小顶堆如下。这道题目之前解答过,现在用刚学的优先级队列来实现一下。计算机科学中,堆是一种基于树的数据结构,通常用。完全二叉树可以使用数组来表示。
2025-07-13 22:15:00
630
原创 双端队列 -(链表实现、数组实现)
双端队列、队列、栈对比注2:不同语言,操作双端队列的方法命名有所不同,参见下表吐槽一下 leetCode 命名比较 low常见的单词还有 enqueue 入队、dequeue 出队。
2025-07-13 17:38:21
331
原创 栈 -(链表实现、数组实现)
计算机科学中,是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为,另一端不能操作数据的称之为,就如同生活中的一摞书先提供一个栈接口。
2025-07-11 12:00:00
365
原创 队列 -(链表实现、环形数组实现)
计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为,移除的一端称为,就如同生活中的排队买商品先定义一个简化的队列接口。
2025-07-11 06:00:00
585
原创 数组 -(动态数组)
在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识;因为数组内的元素是的,所以数组中元素的地址,可以通过其索引计算出来。例如:知道了数组的起始地址BaseAddress,就可以由公式BaseAddressi∗size计算出索引i元素的地址isizeint4double8已知 array 的的起始地址是 0x7138f94c8,那么元素 3 的地址是什么?
2025-07-09 22:22:24
1085
原创 手动安装jar包到本地仓库,解决maven下载不来问题
将该目录E:\MavenResource\redisson-spring-boot-starter-3.13.3\META-INF\maven\org.redisson\redisson-spring-boot-starter下的pom文件复制粘贴到创建的MavenResource下(必须做,否者找不到META-INF下的文件)配置maven环境变量,Ctrl+R 打开 cmd 运行 mvn -v 查看maven环境是否配置成功。idea刷新,报错提示消失(若提示未消失可关闭项目后重启)
2025-03-13 23:47:56
838
原创 使用springboot搭建多模块单体项目,并使用mybatis-plus实现简单增删改查
名称分别为:druid-spring-boot-3-starter、mybatis-plus-spring-boot3-starter。同时twelve-service模块还需要使用到其他两个模块twelve-common、twelve-pojo,所以需引用这两个模块。由于启动类在twelve-service模块,所以需要有springboot的web依赖,如果需要写测试类还需要test依赖。按此步骤分别创建出 twelve-common、twelve-pojo、twelve-service 三个子模块。
2025-03-10 00:54:18
980
原创 Idea使用Git上传项目到Gitee
(如果最终提交被拒绝,可以使用git clone url 做第一步初始化)创建完之后会有简单的git教学操作。
2025-02-20 02:22:09
1424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅