p68 移除有序数组中的重复元素 (leetcode 26)

一:解题思路

使用2个游标p,q分别指向位置1,当q和q-1所指向的元素相同的时候,q++,如果不等的时候,那么nums[p++]=nums[q++];

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    int removeDuplicates(vector<int>& nums)
    {
        int p = 1, q = 1;

        while (q < nums.size())
        {
            if (nums[q] == nums[q - 1])
            {
                q++;
            }
            else
            {
                nums[p++] = nums[q++];
            }
        }

        return p;
    }
};

Java:

class Solution {
    public int removeDuplicates(int[] nums)
    {
        if(nums.length==0) return 0;

        int p = 1, q = 1;
        while (q < nums.length)
        {
            if (nums[q] == nums[q - 1])
            {
                q++;
            }
            else
            {
                nums[p++] = nums[q++];
            }
        }

        return p;
    }
}

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12534446.html