网站开发和优化关系,明年做那个网站致富,产品设计大师作品,企业品牌策划书题目描述
给你一个 非严格递增排列 的数组 nums #xff0c;请你删除重复出现的元素#xff0c;使每个元素只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k #xff0…题目描述
给你一个 非严格递增排列 的数组 nums 请你删除重复出现的元素使每个元素只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过
更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。
题解
最简单直接的方式 (借助外部数组) func removeDuplicates(_ nums: inout [Int]) - Int {var result [Int]()nums.forEach { integer inif !result.contains(integer) {result.append(integer)}}result.enumerated().forEach { idx, integer innums[idx] integer}return result.count}原地删除 (双指针) func removeDuplicates(_ nums: inout [Int]) - Int {let n nums.countif n 0 {return 0}var fast 1, slow 1while fast n {if (nums[fast] ! nums[fast - 1]) {nums[slow] nums[fast]slow 1}fast 1}return slow}