本系列是代码随想录算法训练营的学习笔记之day5,主要记录一下刷题的过程,以及核心知识点和一些值的记录的问题。
代码随想录的资源都是免费的,具体可以看参考链接【1】。
今日知识点
今天是回顾前面四天的知识,因为是第一遍刷题,更多的是理解和动手。
链表理论基础:
- 链表是一种串联、线性结构;
- 每个节点有两部分组成,值域和指针域,指针域存放指向下一个节点的指针;
- 最后一个节点的指针域指向null(注意不同语言的写法,比如python是None);
数组理论基础:
- 存放相同类型数据;
- 在内存上是连续的(二维数组视语言而定);
- 数组元素不能删除,只能覆盖;
在解题的时候要注意链表和数组的特征,比如数组元素不能删除、链表是线性结果等。
题目回顾
可以看着题目想解法:
- 数组:
- 二分查找:不断对分
- 移除元素:把不要的放后面
- 有序数组的平方:最大的元素平方在两端
- 长度最小的子数组:要注意两层循环
- 螺旋矩阵:注意offset和loop的边界
- 链表
- 移除元素:移除就是使得指针跳过
- 设计链表:
- 翻转链表:注意保存马山要锻炼掉的“链”
- 两两交换链表中的节点:“两两”交换
- 删除链表中的倒数第N个节点:双指针的巧用
- 链表相交:两个链条如果有交点必定能生成环(想象);
- 环形链表:数学公式的推导
需要牢记/注意的几点
- 双指针的用法
- 数组相关题目中循环的边界条件
- 删除链表节点其实就是修改了上一个链表的指针域(python自动回收内存);
- 虚拟头结点的用法
参考
【1】代码随想录:https://programmercarl.com/
本文由mdnice多平台发布