美文网首页
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