26. Remove Duplicates from Sorted Array

来源:互联网 发布:数据分析金融分析就业 编辑:程序博客网 时间:2024/05/16 18:50

这里写图片描述
使用快慢指针:快,慢指针从坐标0开始,当所指的值一样,快指针加一,值不一样时,快慢指针都加一。当快指针遍历链表时,给慢指针的坐标值加一就是去重后的长度。

    int removeDuplicates(vector<int>& nums) {        if(nums.empty()) return 0;        int slow=0,fast=0,n=nums.size();        while(fast<n){            if(nums[slow]==nums[fast]) fast+=1;            else nums[++slow]=nums[fast++];        }        return slow+1;    }

使用for,原理和快慢指针一样

    int removeDuplicates(vector<int>& nums) {        if(nums.empty()) return 0;        int j=0;        for(int i=0;i<nums.size();i++){            if(nums[j]!=nums[i]) nums[++j]=nums[i];        }        return j+1;    }

快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。
应用:判断单链表是否为循环链表
在有序链表中寻找中位数
如果链表为存在环,如何找到环的入口。
快慢指针应用的博客