今天介绍双指针的使用。
Carl哥的代码随想录里数组的第二篇是移除元素,例题是leetcode的第27.移除元素。
可能是我白嫖的原因,这一节我没有很看明白双指针做题的技巧,就记录一下我的个人想法。
我认为对做题有帮助的点有这些:
- 双指针涉及快慢指针的话,要明确快慢指针的定义:
- 快指针:寻找新数组的元素。这里的元素是满足一定条件的;
- 慢指针:指向更新 新数组下标的位置。
- 双指针可以区分为单向指针、相向指针。
- 单向指针:指针从头向尾,或者从尾向头移动;
- 相向指针:指针从两端向中间靠拢。
Carl哥推荐的题目里,26.删除排序数组种的重复项、283.移动零、844.比较含退格的字符串是单向指针,前二者涉及快慢指针,后者是单向指针从尾向头移动。
977.有序数组的平方 是相向指针。