算法题库通关计划
Kick Off
牛客的算法题库比较小,只有 382 道题目(统计自2021.07.19)。
我计划以每周三到五道题的频率通关这个题库,并把题解记录在此。我会尽我所能保证题解的质量,同时也欢迎大家提出宝贵的意见。
也欢迎志同道合的你一起加入通关计划,一起变强。
入门指北
通关记录
选择问题的优先级:
- 首先,优先解决 Top 200 的题目。
- 其次,先解决数组,链表,队列,栈这些比较基础,不易和其他知识点混合的题目(其他类型,后续再规划)。
- 最后,从简单到困难依次解决。
数组 (2021.08.05 - 2021.08.06,只做了仅包含「数组」标签的题目)
- NC18 顺时针旋转矩阵
- 题解:顺时针旋转的两种实现
- NC30 数组中未出现的最小正整数
- 题解:三种解法
- NC38 螺旋矩阵
- NC77 调整数组顺序使奇数位于偶数前面
- 题解:两种解法
- NC106 三个数的最大乘积
- 题解:寻找最值
- NC107 寻找峰值
- 题解:答案一定存在吗
- NC110 旋转数组
- 题解:数组位移的两种方法
链表 (2021.07.20 - 2021.08.05)
- NC2 重排链表
- 待补充题解:双指针,快慢指针,反转,头插,尾插
- NC3 链表中环的入口结点
- 待补充题解:双指针,快慢指针,环的长度,环的入口;hack next指针以及该做法的理论支撑;
- NC4 判断链表中是否有环
- 待补充题解:双指针,快慢指针
- NC21 链表内指定区间反转
- 待补充题解:双指针,区间反转
- NC23 划分链表
- 待补充题解:尾插法
- NC24 删除有序链表中重复的元素-II
- 待补充题解:尾插法
- NC25 删除有序链表中重复的元素-I
- 待补充题解:链表删除节点
- NC33 合并有序链表
- 待补充题解:尾插法
- NC40 两个链表生成相加链表
- 待补充题解:链表反转,函数封装,O(1)的空间复杂度,边界。
- NC50 链表中的节点每k个一组翻转
- 待补充题解:头插法,每个节点访问两次,链表反转
- NC51 合并k个已排序的链表
- 待补充题解:堆排序,std::priority_queue, 尾插法
- NC53 删除链表的倒数第n个节点
- 待补充题解:双指针;删除节点;
- NC66 两个链表的第一个公共结点
- 待补充题解:双指针;hack next 以及理论支撑;腾讯面试经历
- NC69 链表中倒数最后k个结点
- 待补充题解:双指针;注意边界;
- NC70 链表排序
- 待补充题解:链表的冒泡排序,归并排序,以及基于数组+值的排序
- NC78 反转链表
- 待补充题解:头插法
- NC96 判断一个链表是否为回文结构
- 待补充题解:双指针,快慢指针,反转。栈的做法真的可取吗?为何用栈而不是用数组?在该场景下栈比数组更优吗?
- NC133 链表的奇偶重排
- 待补充题解:尾插法,异或
- NC132 环形链表的约瑟夫问题
- 待补充题解:这玩意和链表也没关系啊,证明过程