自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 文本左右对齐

给定一个单词数组 和一个长度 ,重新排版单词,使其成为每行恰好有 个字符,且左右两端对齐的文本。你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的最后一行应为左对齐,且单词之间不插入额外的空格。注意:示例 1:输入: words = ["This", "is", "an", "exampl

2024-10-15 14:21:25 721 1

原创 分发糖果——贪心算法

n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

2024-10-12 16:08:00 930

原创 最长有效括号

栈方法:使用栈来追踪未匹配的的位置,处理括号时弹出栈顶元素,计算有效子串长度,适合处理的问题,时间复杂度为 O(n),空间复杂度为 O(n)。动态规划方法:使用数组记录以每个字符结尾的有效括号长度,进行更新和计算,时间复杂度为 O(n),空间复杂度也为 O(n)(可以进一步优化到 O(1))。

2024-10-10 15:57:40 314

原创 LRU 缓存

请你设计并实现一个满足约束的数据结构。LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的,选择最近最久未使用的页面予以淘汰。该算法赋予每个一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。最近最少使用算法(LRU)是大部分为最大化页面命中率而广泛采用的一种页面置换算法。该算法的思路是,发生缺页中断时,选择未使用时间最长的页面置换出去。

2024-10-08 19:43:04 767

原创 二叉树的层序遍历

给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。root = [1][[1]]root = [][][0, 2000]要实现二叉树的层序遍历,我们可以使用广度优先搜索(BFS)的策略。具体来说,我们将使用一个队列来实现这一点,以便逐层访问树的节点。核心就是遍历根节点的时候把根节点的子节点放入队列实现对数的遍历并将每一层的所有数字放入数组中,将本层全部节点打印到一行,并将下一层全部节点加入队列,以此类推,即可分为多行打印。

2024-10-04 17:17:07 331

原创 完全平方数

动态规划其实也就是遍历,只不过将中间值用空间储存起来了,在递归的基础上,用空间存储换时间,就是遍历了所有情形然后取的最小值,不过动态规划有自顶向底和自底向顶,前者是不需要递归的。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。的完全平方数的最少数量。

2024-10-02 20:48:40 371

原创 跳跃游戏 II

给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。2跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1步,然后跳 3 步到达数组的最后一个位置。2nums[n-1]

2024-10-02 20:21:50 327

原创 两两交换链表中的节点

这一步是递归的核心:我们通过递归调用 `swapPairs(next.next)` 来处理下一个节点的交换。` 最后,返回 `next`,它成为交换后的当前对的头节点(即在交换后,原先的第二个节点现在成为了这一对的前端节点)。` 这一步将 `next` 节点指向当前的 `head` 节点,因此这两个节点完成了交换。- 将 `2 -> (4 -> 3)` 连接,返回 `2 -> 1 -> (4 -> 3)`- 处理 `4 -> 3` 进行交换,最终返回 `4 -> 3 -> null`

2024-09-29 14:46:09 1023

原创 排序链表-力扣

在归并排序中,我们可以将链表分割为两半,递归地对这两部分进行排序,然后再将它们合并在一起。1. **ListNode 类**: 定义链表节点的结构,包括节点值 `val` 和下一个节点 `next`。这种方法的时间复杂度是 O(n log n),空间复杂度是 O(log n),是高效的链表排序方法。- 测试代码,创建一个示例链表并调用 `sortList` 方法,最后打印排序后的链表。- 首先检查链表是否为空或只有一个节点,如果是,直接返回这个节点。- 合并两个已排序的部分,并返回合并后的链表。

2024-09-28 17:48:24 447

原创 随机链表的复制

例如,对于节点A,插入节点A'(复制节点)在A后面,形成 `A -> A' -> B -> B' -> ...` 的结构。- **主方法**中创建了一个示例链表,调用 `copyRandomList` 方法,并输出复制链表的结果以验证其正确性。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。- **Node 类**:定义了链表节点,包含值和指向下一个节点及随机节点的指针。3. **第三次遍历**:将新复制的节点分离出来,形成一个单独的新链表。返回复制链表的头节点。

2024-09-28 17:17:40 646

原创 数据流的中位数

要实现一个 `MedianFinder` 类,我们可以利用两个优先队列(最大堆和最小堆)来有效地插入数据,并计算中位数。使用最大堆来存储较小的一半元素,使用最小堆来存储较大的一半元素。- 优先队列(PriorityQueue):Java 中的 `PriorityQueue` 提供了按优先级顺序排序的队列。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。- 如果最大堆和最小堆的大小相同,中位数是两个堆顶元素的平均值。- 如果最大堆比最小堆多一个元素,中位数是最大堆的堆顶元素。

2024-09-27 19:14:35 342

原创 二叉树的中序遍历

中序遍历是一种遍历二叉树的方式,其顺序是:首先遍历左子树,然后访问根节点,最后遍历右子树。- **inorderTraversal 方法:** 这是一个公共方法,返回中序遍历的结果。根据使用的实现方式,它会调用相应的辅助或者非递归方法。- **主函数(main 方法):** 在主函数中,我们创建了一个示例二叉树并调用 `inorderTraversal` 方法以演示结果。- **TreeNode 类:** 用于定义二叉树的节点,每个节点包含一个整数值、一个指向左子树的指针和一个指向右子树的指针。

2024-09-27 19:06:45 206

原创 跳跃游戏——贪心算法

给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。

2024-09-24 21:44:06 234

原创 买卖股票的最佳时机

给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。

2024-09-24 21:28:18 277

原创 mysql常见问题

在数据库中,聚集索引(Clustered Index)和非聚集索引(Non-Clustered Index)是两种重要的索引类型,它们在数据的组织和存储方式上有着显著的区别。数据列完全覆盖:覆盖索引中的索引列包含了查询语句中所需的所有列,因此可以直接通过索引来获取查询结果,而无需访问实际的数据行。避免回表操作:在传统的索引查询中,如果索引不包含查询所需的所有列,数据库系统需要先通过索引找到对应的主键值,然后再通过主键值去表中检索数据,这个过程称为回表。

2024-09-13 18:56:42 1474

原创 redis

如果主节点被标记为不可达,哨兵节点之间会进行协商,当大多数哨兵节点认为主节点不可达时,它们会选举出一个哨兵节点来完成自动故障转移的工作。Elasticsearch的选举机制主要指的是集群主节点的选举,当主节点失效时,集群会自动进行新的主节点的选举。具体来说,节点会向所有比自己编号大的节点发送选举消息,如果该节点没有收到任何回复,则它将成为新的主节点。选举过程通常在以下几种情况下触发:集群启动初始化、集群的主节点崩溃时、或当任何节点发现当前集群中的主节点没有得到半数以上(n/2 + 1)节点认可的时候。

2024-09-11 11:19:40 439

原创 动态规划解决通配符匹配问题

这段代码的时间复杂度为 O(m*n),其中 m 为字符串 s 的长度,n 为字符串 p 的长度。初始化两个变量 m 和 n 分别表示字符串 s 和 p 的长度,创建一个长度为 n+1 的布尔型数组 f 用来存储匹配状态。遍历模式字符串 p,如果当前字符是 * 且前一个位置的状态为 true,就将当前位置设为 true。开始匹配字符串 s,外层循环遍历字符串 s 每个字符,内层循环遍历模式字符串 p 的每个字符。判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。

2024-09-10 11:27:17 173

原创 算法笔记-力扣难题

在解决一些算法题所遇到的难题

2024-09-09 10:58:10 1472

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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