26. 删除有序数组中的重复项 (Swift版本)

题目描述

给你一个 非严格递增排列 的数组 nums ,请你删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

题解

最简单直接的方式 (借助外部数组)

swift 复制代码
    func removeDuplicates(_ nums: inout [Int]) -> Int {
        var result = [Int]()
        nums.forEach { integer in
            if !result.contains(integer) {
                result.append(integer)
            }
        }
        result.enumerated().forEach { idx, integer in
            nums[idx] = integer
        }
        return result.count
    }

原地删除 (双指针)

swift 复制代码
    func removeDuplicates(_ nums: inout [Int]) -> Int {
        let n = nums.count
        if n == 0 {
            return 0
        }
        var fast = 1, slow = 1
        while fast < n {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast]
                slow += 1
            }
            fast += 1
        }
        return slow
    }
相关推荐
信奥卷王16 小时前
[GESP202503 六级] 环线(含视频)
算法
CQU_JIAKE16 小时前
10.15【A】
算法
晴天的雨.99216 小时前
【C++】模板进阶
开发语言·c++·算法
木井巳16 小时前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
楚识科技16 小时前
手写 OCR 识别技术深度解析:从算法原理到政企级落地实现
算法·ocr
码爸19 小时前
b树详细介绍与示例
数据结构·b树
leobertlan1 天前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的1 天前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
开发小能手1231 天前
答案daanC语言
数据结构·算法
健了个平_241 天前
【iOS】关于传统竖屏 UIKit 项目如何简单适配 iPhone Duo 的第一版
ios·app·swift