冷意
冷意
全部文章
分类
归档
标签
去牛客网
登录
/
注册
冷意的博客
全部文章
(共169篇)
题解 | 数组中的逆序对
1、解题思路归并排序:归并排序的过程中,可以统计逆序对的数量。在合并两个已排序的子数组时,如果左侧的元素大于右侧的元素,则左侧剩余的所有元素都与该右侧元素构成逆序对。分治策略:将数组不断分成两半,递归处理。在合并时,计算跨子数组的逆序对数量。取模处理:在统计逆序对时,直接对结果进行 mod 1000...
2025-06-25
0
9
题解 | 寻找峰值
1、解题思路初始化行指针 row = 0 和列指针 col = n - 1(即右上角)。循环直到 row < m 且 col >= 0 : 如果 array[row][col] == target,返回 true。如果 array[row][col] > target,则目标可能在...
2025-06-25
0
9
题解 | 二维数组中的查找
1、解题思路初始化行指针 row = 0 和列指针 col = n - 1(即右上角)。循环直到 row < m 且 col >= 0 : 如果 array[row][col] == target,返回 true。如果 array[row][col] > target,则目标可能在...
2025-06-25
0
8
题解 | 二分查找-I
1、解题思路二分查找:初始化左指针 left = 0 和右指针 right = len(nums) - 1。循环直到 left <= right : 计算中间指针 mid = left + (right - left) / 2(防止溢出)。如果 nums[mid] == target,返回 m...
2025-06-25
0
13
题解 | 删除有序链表中重复的元素-II
1、解题思路使用哨兵节点:创建一个哨兵节点 dummy,将其 next 指向链表头,便于处理头节点可能被删除的情况。遍历链表:使用指针 prev 指向当前已处理链表的最后一个节点,curr 指向当前正在检查的节点。循环检查 curr 和 curr.next 是否相同: 若相同,则继续移动 curr ...
2025-06-25
0
9
题解 | 删除有序链表中重复的元素-I
1、解题思路遍历链表:使用一个指针 curr 从链表头开始遍历。比较当前节点的值与其下一个节点的值: 如果相同,则跳过下一个节点(删除重复节点)。如果不同,则移动指针到下一个节点。终止条件:当 curr 或 curr.next 为 null 时停止遍历。2、代码实现C++ /** * struct...
2025-06-25
0
13
题解 | 链表的奇偶重排
1、解题思路反转后半部分链表:使用快慢指针找到链表的中间节点。反转链表的后半部分。比较前后两部分:将反转后的后半部分与原链表的前半部分逐个节点比较。如果所有节点的值都相同,则链表为回文结构。恢复原链表(可选):如果需要保持原链表结构,可以将后半部分链表反转回来。2、代码实现C++ /** * st...
2025-06-25
0
9
题解 | 判断一个链表是否为回文结构
1、解题思路反转后半部分链表:使用快慢指针找到链表的中间节点。反转链表的后半部分。比较前后两部分:将反转后的后半部分与原链表的前半部分逐个节点比较。如果所有节点的值都相同,则链表为回文结构。恢复原链表(可选):如果需要保持原链表结构,可以将后半部分链表反转回来。2、代码实现C++ /** * st...
2025-06-25
0
11
题解 | 单链表的排序
1、解题思路归并排序:归并排序是链表排序的最佳选择,因为它满足时间复杂度 O(nlogn) 和空间复杂度 O(n) 的要求。归并排序的核心思想是分治法:将链表分成两半,分别排序,然后合并两个有序链表。步骤:分割链表:使用快慢指针找到链表的中间节点,将链表分成两部分。递归排序:分别对分割后的两部分递归...
2025-06-25
0
12
题解 | 链表相加(二)
1、解题思路反转链表:由于加法是从最低位开始计算,因此需要先将两个链表反转,以便从低位到高位依次相加。相加处理:同时遍历两个反转后的链表,逐位相加,并处理进位。如果某个链表遍历完毕,则剩余部分直接与进位相加。如果最后还有进位,需要额外创建一个节点。反转结果链表:将相加得到的结果链表反转,恢复成高位在...
2025-06-25
0
10
首页
上一页
4
5
6
7
8
9
10
11
12
13
下一页
末页