冷意
冷意
全部文章
分类
归档
标签
去牛客网
登录
/
注册
冷意的博客
全部文章
(共169篇)
题解 | 设计LRU缓存结构
1、解题思路为了实现LRU缓存,我们需要满足以下条件:快速访问:get和set操作的时间复杂度为O(1)。记录访问顺序:需要快速找到并更新最近使用的key,同时移除最久未使用的key。数据结构选择:哈希表(Hash Map):用于快速查找key对应的value。双向链表(Doubly Linked ...
2025-06-29
0
12
题解 | 顺时针旋转矩阵
1、解题思路直接旋转法: 创建一个新的 NxN 矩阵。遍历原矩阵,将原矩阵的第 i 行变为新矩阵的第 N-i-1 列。原地旋转法(进阶要求): 先对矩阵进行转置(行列互换)。然后对每一行进行反转。原地旋转法满足空间复杂度 O(1) 的要求,因为不需要额外的存储空间。2、代码实现C++ #includ...
2025-06-29
0
8
题解 | 螺旋矩阵
1、解题思路初始化边界:设定矩阵的上下左右边界(top, bottom, left, right)。按层遍历 : 从左到右遍历上层边界(top层)。从上到下遍历右层边界(right层)。从右到左遍历下层边界(bottom层)。从下到上遍历左层边界(left层)。更新边界:每完成一层遍历后,收缩相应的...
2025-06-29
0
2
题解 | 旋转数组
1、解题思路三次反转法: 将数组分成两部分:前 n-M 个元素和后 M 个元素。反转整个数组。反转前 M 个元素。反转后 n-M 个元素。这样可以得到循环右移 M 个位置后的数组。直接移动法: 逐个将元素移动到目标位置,但这种方法移动次数较多,效率较低。显然,三次反转法是最优的,因为它只需要进行三次...
2025-06-29
0
7
题解 | 主持人调度(二)
1、解题思路这是一个典型的区间调度问题,可以通过贪心算法来解决。具体步骤如下:排序活动:首先将所有的活动按照结束时间进行排序。如果结束时间相同,可以按开始时间排序。贪心选择 :使用一个优先队列(最小堆)来记录当前正在进行活动的结束时间。 遍历排序后的活动,对于每个活动,检查堆顶的结束时间是否小于等于...
2025-06-29
0
2
题解 | 分糖果问题
1、解题思路这是一个典型的贪心算法问题,可以通过两次遍历数组来解决:从左到右遍历 :确保每个孩子与其左侧相邻孩子满足糖果分配规则。 如果当前孩子的得分比左侧高,则当前孩子的糖果数至少为左侧孩子的糖果数加1。否则,当前孩子的糖果数至少为1(初始值)。从右到左遍历 :确保每个孩子与其右侧相邻孩子满足糖果...
2025-06-29
0
7
题解 | 接雨水问题
1、解题思路双指针法: 使用两个指针,一个从左向右移动(left),一个从右向左移动(right)。维护两个变量,left_max和right_max,分别表示从左到右和从右到左遍历时的最大高度。每次移动高度较小的指针,因为较小的高度决定了当前能够接住的雨水量。计算当前柱子的接水量:min(left...
2025-06-29
0
11
题解 | 盛水最多的容器
1、解题思路暴力法:遍历所有可能的两根高度组合,计算每对组合的容积,并记录最大容积。时间复杂度为 O(n^2^),对于 n=10^5^ 来说,这种方法显然不可行。双指针法:使用两个指针,一个指向数组的开始(left),一个指向数组的末尾(right)。计算当前指针所指向的两根高度形成的容积,并更新最...
2025-06-29
0
7
题解 | 最长无重复子数组
1、解题思路滑动窗口法:使用双指针(left 和 right)表示当前窗口的左右边界。使用哈希表记录窗口中各元素的最后一次出现的位置。当遇到重复元素时,移动 left 指针到重复元素的下一个位置。更新窗口的最大长度。复杂度分析:时间复杂度:O(n),只需要遍历数组一次。空间复杂度:O(n),哈希表最...
2025-06-29
0
6
题解 | 反转字符串
1、解题思路直接反转:遍历字符串,从最后一个字符到第一个字符依次取出,构建新的反转字符串。这种方法直观且易于实现。利用语言特性:一些语言提供了直接反转字符串的方法,可以简单调用。双指针法:使用两个指针分别指向字符串的首尾,交换字符并向中间移动,直到指针相遇。2、代码实现C++ class Solut...
2025-06-29
0
7
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页