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

2022-09-29  本文已影响0人  王侦

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

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

题目描述

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

前置知识

公司

思路

关键点

代码

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 为数组长度。

上一篇下一篇

猜你喜欢

热点阅读