摘要: 题目链接 876.链表的中间结点 思路 定义两个指针fast和slow,快的指针一次走两步,慢的指针一次走一步,这样当快的指针走到底的时候,慢指针正好在中间。 以下两幅图说明了偶数结点下,不同循环条件对慢指针结束位置的影响。 代码 class Solution { public ListNode m 阅读全文
posted @ 2023-01-03 09:14 Frodo1124 阅读(27) 评论(0) 推荐(0) 编辑
摘要: ==排序过程中,对尚未确定最终位置的元素进行一遍处理,叫做“一趟”== 内部排序的比较 插入排序 思想: 如果自己前面的元素比自己大,那么开始比较更前面的元素,放在合适的位置。 void insertSort(int a[],int n){ int i, j; for(i = 1; i < n; + 阅读全文
posted @ 2023-01-02 22:21 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 题目链接 215. 数组中的第K个最大元素 思路 对于给定数组,求解第 $k$ 大元素,且要求线性复杂度,正解为使用「快速选择」做法。 基本思路与「快速排序」一致,每次敲定一个基准值 $x$,根据当前与 $x$ 的大小关系,将范围在 $[l,r]$ 的 $nums[i]$ 划分为到两边。 同时利用, 阅读全文
posted @ 2023-01-02 21:48 Frodo1124 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 题目链接 75.颜色分类 思路 题目要求按0、1、2的顺序排序,因为数量有限,所以通过两次遍历,分别将0和1交换到合适的位置,这样两次遍历之后,剩下的2就都在尾部了。 circle 代表这一次要对哪个数字进行重置位置,所以它的取值就限定在0、1,因为当我们确定好0和1位置之后,2的位置也就确定好了。 阅读全文
posted @ 2023-01-01 11:26 Frodo1124 阅读(37) 评论(2) 推荐(0) 编辑
摘要: 题目链接 179. 最大数 思路 转自宫水三叶大佬的题解 对于 nums 中的任意两个值 a 和 b,我们无法直接从常规角度上确定其大小/先后关系。 但我们可以根据「结果」来决定 a 和 b 的排序关系: 如果拼接结果 ab 要比 ba 好,那么我们会认为a应该放在b前面。 代码 class Sol 阅读全文
posted @ 2023-01-01 11:03 Frodo1124 阅读(48) 评论(1) 推荐(0) 编辑
摘要: 题目链接 27. 移除元素 思路 先设定变量idx,指向待插入位置。idx初始值为0。 然后从题目的「要求/保留逻辑」出发,来决定当遍历到任意元素 x 时,应该做何种决策: 如果当前元素 x 与移除元素 val 相同,那么跳过该元素 如果当前元素 x 与移除元素 val 不同,那么我们将其放到下标 阅读全文
posted @ 2022-12-31 13:09 Frodo1124 阅读(46) 评论(1) 推荐(0) 编辑
摘要: 判断区间是否重叠 题目链接 252.合并区间 给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。 示例 1: 输入: intervals = [[0,30] 阅读全文
posted @ 2022-12-31 11:26 Frodo1124 阅读(120) 评论(2) 推荐(0) 编辑
摘要: 题目链接 206. 反转链表 思路 先添加一个头结点real_head。再设置real_head.next = null,通过不断运用头插法将p所指的结点插入到real_head.next,完成反转操作。 代码 class Solution { public ListNode reverseList 阅读全文
posted @ 2022-12-31 10:01 Frodo1124 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 原文链接:Leetcode面试高频题分类刷题总结 排序类(Sort) 基础知识:快速排序(Quick Sort), 归并排序(Merge Sort)的原理与代码实现。需要能讲明白代码中每一行的目的。快速排序时间复杂度平均状态下O(NlogN),空间复杂度O(1),归并排序最坏情况下时间复杂度O(Nl 阅读全文
posted @ 2022-12-30 21:37 Frodo1124 阅读(1898) 评论(3) 推荐(1) 编辑
摘要: 题目链接 148. 排序链表 思想 分割 cut 环节: 找到当前链表中点,并从中点将链表断开(以便在下次递归 cut 时,链表片段拥有正确边界) 我们使用 fast,slow 快慢双指针法,奇数个节点找到中点,偶数个节点找到中心左边的节点。 找到中点 slow 后,执行 slow.next = N 阅读全文
posted @ 2022-12-30 21:24 Frodo1124 阅读(296) 评论(0) 推荐(0) 编辑