注:本文写于C语言学习早期,双指针的用法较为基础且不全面。本文章将涉及C语言数组至数据结构的链表
Q:为什么要用双指针?A:因为通过使用双指针可以使算法的时间复杂度降低(或者降低遍历次数),有时也能降低空间复杂度
分类根据双指针的用法,可分为前后双指针,头尾双指针,快慢双指针…..
以下为各种双指针的应用及介绍前后双指针应用一 删除排序数组中的重复项要求:原地删除,并返回新数组的长度,不需要考虑数组中超出新长度后面的元素。
思路:通过创建一前一后两个指针,前指针指向上一个元素,后指针向后历遍,一旦找到不同的元素,前指针指向下一个位置,并视为空位,通过后指针找到目标元素,并存入前指针目前所指向的空位。然后后指针接着遍历,直至遍历整个数组.
12345678910111213141516171819202122//代码实现int removeDuplicates(int* nums, int numsSize){ int* left = nums; int*right = nums+1; int ret = 1; //遍历数组 for (int i ...