LeetCode之从排序数组中删除重复项-Swift

栏目: Swift · 发布时间: 6年前

内容简介:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。在题目的描述中我们可以总结出一下几点要求:通过上面的要求我们可以通过在一次遍历中判断元素是否相同并交换两个元素的位置来实现,

给定一个 排序 数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例

示例 1:
给定数组 nums = [1,1,2], 
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。
复制代码

答案

在题目的描述中我们可以总结出一下几点要求:

  • 只能遍历一遍数组
  • 不能创建新的数组
  • 不需要考虑数组中超出新长度后面的元素

通过上面的要求我们可以通过在一次遍历中判断元素是否相同并交换两个元素的位置来实现, 其实并没有将数组中的元素真正的删除,只是交换了位置

代码如下:

func removeDuplicates(_ nums: inout [Int]) -> Int {
    var count = 1
    if nums.count == 0 {
        return 0
    }
    
    for idx in 1..<nums.count {
        if nums[idx] != nums[idx - 1] {
            nums[count] = nums[idx]
            count = count + 1
        }
    }
    return count
}
复制代码

nums = [0,0,1,1,1,2,2,3,3,4] 的执行结果如下:

第一次:第一个元素0和第二个元素0比较,元素相同,进入下一次循环。当前数组:
[0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
第二次:第三个元素1和第二个元素0比较,元素不同,将第二次出现的元素0(即index == count的元素0),count加一,进入下一次循环。当前数组:
[0, 1, 1, 1, 1, 2, 2, 3, 3, 4]
第三次:第四个元素1和第三个元素1比较,元素相同,进入下一次循环。当前数组:
[0, 1, 1, 1, 1, 2, 2, 3, 3, 4]
第四次:第️五个元素1和四个元素1比较,元素相同,进入下一次循环。当前数组:
[0, 1, 1, 1, 1, 2, 2, 3, 3, 4]
第五次:第六个元素2和五个元素1比较,元素不同,将第二次出现的元素1(即index == count的元素1)与第六个元素2互换,count加一,进入下一次循环。当前数组:
[0, 1, 2, 1, 1, 2, 2, 3, 3, 4]
第六到n次,以此类推:
[0, 1, 2, 1, 1, 2, 2, 3, 3, 4]
[0, 1, 2, 3, 1, 2, 2, 3, 3, 4]
[0, 1, 2, 3, 1, 2, 2, 3, 3, 4]
[0, 1, 2, 3, 4, 2, 2, 3, 3, 4]
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby on Rails社区网站开发

Ruby on Rails社区网站开发

布拉德伯纳 / 柳靖 / 2008-10 / 55.00元

《Ruby on Rails社区网站开发》全面探讨创建完整社区网站的开发过程。首先介绍开发一个内容简单的管理系统,之后逐渐添加新特性,以创建更完整的、使用Ruby on Rails 的Web 2.0 社区网站。还给出了开发和测试中的一些建议和提示,同时指导如何使网站更生动以及维护得更好。《Ruby on Rails社区网站开发》也探讨了如何与Flickr 、Google Maps 等其他平台集成,......一起来看看 《Ruby on Rails社区网站开发》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具