LeetCode Remove Duplicates from Sorted Array II

来源:互联网 发布:l39h港行支持什么网络 编辑:程序博客网 时间:2024/06/05 04:01

80、Remove Duplicates from Sorted Array II

问题描述:

Follow up for “Remove Duplicates”:
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.

分析:

  对于排好序列的一个数列,每个元素最多允许出现2次,将出现两次以上的元素去除,输出新数组的长度。
  设置一个index变量,记录数字出现次数不超过2的数列的长度,若数字出现次数超过2,则将index后移,最后输出index值作为数列长度。

C++实现:

class Solution {    public:      int removeDuplicates(vector<int>& nums) {        if (nums.size() <= 2) return nums.size();        int index = 2;        for (int i = 2; i < nums.size(); i++){          if (nums[i] != nums[index - 2])            nums[index++] = nums[i];       }       return index;   }};

python实现:

class Solution(object):    def removeDuplicates(self, nums):        """        :type nums: List[int]        :rtype: int        """        if (len(nums) <= 2):            return len(nums)        index = 2        for i in xrange(2,len(nums)):            if(nums[i] != nums[index - 2]):                nums[index] = nums[i]                index += 1        return index