美文网首页我爱编程
[数组]26. Remove Duplicates from S

[数组]26. Remove Duplicates from S

作者: Reflection_ | 来源:发表于2018-06-11 01:00 被阅读0次

26. Remove Duplicates from Sorted Array

给定一个有序的数组nums,删除重复内容,使每个元素只出现一次并返回新的长度。
不要为其他数组分配额外空间,您必须通过在O(1)额外内存中就地修改输入数组来实现此目的。

思路:数组有序,重复数组必定相邻!
其它和27是一样的。

JAVA 13ms

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length <= 1) return nums.length;
        int count = 0;
        for(int i = 1; i<nums.length; i++){
            if(nums[count] != nums[i]){
                nums[++count] = nums[i];
            }
        }
     
        return count+1;
    }
}

Python 103 ms

a[::-1]用法:翻转list

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if(len(nums)<=1):
            return len(nums)
        for i in range(1, len(nums))[::-1]:#倒序,删除才不会影响
            if(nums[i] == nums[i-1]):
                del nums[i]
        return len(nums)

另一种python更快解法,反而不删除更快 102ms

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        pre = None
        i = 0
        for num in nums:
            if (pre == None or num != pre):
                nums[i] = num
                pre = num
                i += 1
        return i

相关文章

网友评论

    本文标题:[数组]26. Remove Duplicates from S

    本文链接:https://www.haomeiwen.com/subject/xrqceftx.html