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