美文网首页
26. 删除有序数组中的重复项

26. 删除有序数组中的重复项

作者: 王侦 | 来源:发表于2022-09-29 22:14 被阅读0次

    题目地址(26. 删除有序数组中的重复项)

    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/

    题目描述

    给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
    
    由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
    
    将最终结果插入 nums 的前 k 个位置后返回 k 。
    
    不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
    

    前置知识

    公司

    • 暂无

    思路

    • 双指针
    • i索引遍历素有元素
    • valid始终指向有效元素的最后一个

    关键点

    代码

    • 语言支持:Go

    Go Code:

    
    func removeDuplicates(nums []int) int {
        if nums == nil {
            return 0
        }
        valid := 0;
        currentValue := nums[0]
        n := len(nums)
        for i := 1; i < n; i++ {
            if nums[i] != currentValue {
                currentValue = nums[i]
                valid++
                nums[valid] = nums[i]
            }
        }
        return valid + 1;
    }
    
    

    复杂度分析

    令 n 为数组长度。

    • 时间复杂度:O(n)
    • 空间复杂度:O(1)

    相关文章

      网友评论

          本文标题:26. 删除有序数组中的重复项

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