[数组]26. Remove Duplicates from Sorted Array

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容