数组双指针技巧汇总 [labuladong-刷题打卡 day2]

发布时间 2023-08-03 15:07:35作者: Alan-Blog

https://labuladong.github.io/algo/challenge/ji-chu-tiao-zhan/day02/

快慢指针

26. 删除有序数组中的重复项
两个指针分别维护符合条件数组和待删除数组,当快指针移动时将符合条件元素插入已完成数组后即可。
通过这两天对双指针的练习,可以发现很多双指针算法其实也是一种迭代算法,只是通过指针特性维护不同队列、链表、数组,实现较小改动。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size()==0) return 0;

        int slow,fast;
        int len=nums.size();
        for(slow=0,fast=1;fast<len;fast++){
            if(nums[slow]!=nums[fast]){
                nums[++slow]=nums[fast];
            }
        }
        return slow+1;
    }
};

左右指针

在文章中介绍了很多左右指针的用法,如:二分查找,nums和回文判断,这里选择最后一个最长回文练习
5. 最长回文子串