leetcode[26]-删除排序数组中的重复项

题目

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

python程序

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        len_nums = len(nums)
        if len_nums==0:
            return 0
        i=0
        for j in xrange(1,len_nums):
            if nums[i]==nums[j]:
                continue
            else:
                i+=1
                nums[i]=nums[j]
        return i+1

思路很常规,使用快慢指针,遍历一遍就可以。

len_nums = len(nums)
if len_nums==0:
    return 0

特殊情况处理,当给的字符串长度为0时,返回0。

i=0
for j in xrange(1,len_nums):
    if nums[i]==nums[j]:
        continue
    else:
        i+=1
        nums[i]=nums[j]

这一块是快慢指针的使用,i代表慢指针,j是快指针,快指针按照正常顺序遍历列表,慢指针指示不重复的元素的位置,快指针每次循环都会增加,慢指针只有在遇到不重复元素时才增加。

发表评论

电子邮件地址不会被公开。