自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Leetcode 双指针

下面是的题目都会涉及双指针,除此外,还有。

2025-07-20 00:15:00 435

原创 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

原创 Divide and Conquer

分治思想之前学过的一些经典分而治之的例子。

2025-07-19 06:00:00 314

原创 图 -(图是由顶点(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

原创 哈希表 -(hash 算法是将任意对象,分配一个编号的过程)

未考虑 hash 码的生成,假定该 hash 码由我们提供。

2025-07-16 23:15:00 882

原创 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

原创 Leetcode 设计

O1。

2025-07-16 01:00:00 567

原创 红黑树 -(一种自平衡二叉查找树)

红黑树是一种自平衡二叉查找树,最早由一位名叫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

原创 Leetcode 字符串

【代码】Leetcode 字符串。

2025-07-15 00:45:00 173

原创 二叉树 -(广度优先、深度优先)

二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子重要的二叉树结构。

2025-07-14 21:00:00 962

原创 堆 -(建堆、力扣习题)

以大顶堆为例,相对于之前的优先级队列,增加了堆化等方法。

2025-07-14 11:45:00 902

原创 Leetcode 单调队列和栈

【代码】Leetcode 单调队列和栈。

2025-07-14 00:45:10 517

原创 阻塞队列 -(单锁实现、双锁实现)

之前的队列在很多场景下都不能很好地工作,例如因此我们需要解决的问题有有同学对线程安全还没有足够的认识,下面举一个反例,两个线程都要执行入队操作(几乎在同一时刻)执行的时间序列如下,假设初始状态 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

原创 递归 -(单路、多路、递归优化)

计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。

2025-07-10 21:29:41 603

原创 链表 -(单向、双向、环形)

在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。

2025-07-10 19:56:25 819

原创 数组 -(动态数组)

在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识;因为数组内的元素是的,所以数组中元素的地址,可以通过其索引计算出来。例如:知道了数组的起始地址BaseAddress,就可以由公式BaseAddressi∗size计算出索引i元素的地址isizeint4double8已知 array 的的起始地址是 0x7138f94c8,那么元素 3 的地址是什么?

2025-07-09 22:22:24 1085

原创 二分查找 -(折半查找)

二分查找算法也称折半查找,是一种非常高效的工作于有序数组的查找算法。

2025-06-08 23:33:29 640

原创 手动安装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关注的人

提示
确定要删除当前文章?
取消 删除