Leetcode刷题---删除有序数组中的重复项 II(双指针问题)

题目描述:
Leetcode刷题---删除有序数组中的重复项 II(双指针问题)_第1张图片
Leetcode刷题---删除有序数组中的重复项 II(双指针问题)_第2张图片
题目中已经给出该数组是一个升序的数组。要求数组中最多出现两个相同的元素,而且不能使用额外的存储空间,并且将新的数组的长度返回。

解题思想:
该题可以使用双指针来解决,我们可以定义一个快指针和一个慢指针。因为数组中最多只能出现两个相同的元素,所以我们可以将快慢指针的索引都设为2(第三个元素),之后,快指针和(慢指针-2)的值进行比对,如果值相等,则快指针前进一位,如果不相等,则证明出现了新的元素,此时就将快指针的值赋值给慢指针,之后慢指针再前进一位,快指针也前进一位。

代码实现:

class Solution {
    public int removeDuplicates(int[] nums) {
        //如果长度不超过2,则无需处理
        int n=nums.length;
        if(n<=2) return n;

        //设置双指针
        int slow=2;//慢指针
        int fast=2;//定义fast快指针,用来扫描数组
        while(fast

你可能感兴趣的:(LeetCode刷题,leetcode,算法,职场和发展)