目录
数组
关于数组,本身结构上比较简单,所以题型上要思考的较多,思想上大多为减治策略,模拟等
- 减而治之的思想,即将一个未知区间的数组亦步亦趋的转化为某些区间已知,某些区间未知的中间状态,最终转化为全部区间已知。(如二分查找的两种不同返回值情况)。技巧上,特定题型比如有序数组的平方使用了双指针法,但是思想上也是减治策略,即减少了未知数组的长度,增加了需求数组的长度,最终达到完整的输出数组。长度最小的子数组也使用了双指针法,确定每个合法的后指针为结尾的子数组长度,然后缩减前指针,找到以当前节点为结尾的最小的子数组,逻辑上也为减治策略,即确定的以当前指针结尾的最小子数组的长度越来越多,最终达到全部已知,找到最小的即可。
- 螺旋矩阵II采用了模拟的思路,即亦步亦趋地根据题意,模拟整个遍历过程,逻辑上来说肯定也是减治思想,但是这种比较直观,所以就归为了模拟法。需要注意边界条件。
链表
关于链表,同样有两种题型,减治和模拟
- 一种是简单模拟类型的题,这种题就是按照题目描述去操作即可,思考上主要在于单次循环需要修改的指针域和顺序,注意由于之前的修改需要提前保存的变量以及循环条件即可。* 另一种是双指针类的题。实际上第二种也算是模拟类型,只是不像第一种题那么直观,不能根据题目描述直接得到需要遍历和单次遍历需要操作的节点,一般是通过快慢指针得到需要修改的节点后,再去做修改。比如链表相交和环形链表。
另外,关于链表,还需要注意虚拟头节点技术,一般增删改需要用来这个dummyHead来统一头节点和其他普通节点的操作,对于查找,则一般不需要使用。
总结
总的来说,在这一周的学习中,主要学习了模拟和减治思想,模拟实际也是减治,但是因为题目比较直观,所以单独分出来,对于这类题,主要注意的是边界条件。另外减治就是思考如何减少未知,增加已知。
标签:总结,Day5,本周,链表,减治,数组,节点,模拟,指针 From: https://www.cnblogs.com/haohaoscnblogs/p/18314246