Python实现删除排序数组中重复项的两种方法示例


Posted in Python onJanuary 31, 2019

本文实例讲述了Python实现删除排序数组中重复项的两种方法。分享给大家供大家参考,具体如下:

对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度

注意:不能为新数组申请额外的空间,只允许申请O(1)的额外空间修改输入数组

Example 1:

Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
It doesn't matter what you leave beyond

Example 2:

Given nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn't matter what values are set beyond the returned length.

说明:为什么返回列表长度而不用返回列表?因为列表传入函数是以引用的方式传递的,函数中对列表进行的修改会被保留。

// nums is passed in by reference. (i.e., without making a copy)
int len = removeDuplicates(nums);
// any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {
  print(nums[i]);
}

1. 简单判断列表中元素是否相等,相等就删除多余元素

def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if not nums:
      return 0
    if len(nums)==1:  #单独判断列表长度为1的情况,因为之后的for循环从下标1开始
      return 1
    temp_num = nums[0]
    count =0     #for循环中动态删除列表元素,列表缩短,为了防止下标溢出需要用count标记删除元素个数
    for index, num in enumerate(nums[1:]):
      if temp_num == num:   #元素相等就删除
        del nums[index-count]
        count += 1
      else:
        temp_num = num
    return len(nums)
def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    forth = 0
    back = 1
    while back <= len(nums)-1:
      if nums[forth] == nums[back]:
        nums.pop(back)
      else:
        forth += 1
        back += 1
    return len(nums)

2. 修改数组,保证数组的前几个数字互不相同,且这几个数字的长度同返回长度相等

def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if not nums:
      return 0
    length = 0   #不存在重复数字的数组长度
    for index in range(1,len(nums)):   #遍历数组
      if nums[index] != nums[length]:
        length += 1
        nums[length] = nums[index]
    return length+1

算法题来自:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/

Python 相关文章推荐
基于wxpython实现的windows GUI程序实例
May 30 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
详解python字节码
Feb 07 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
python使用pymysql模块操作MySQL
Jun 16 Python
python重试装饰器的简单实现方法
Jan 31 #Python
Python实现合并两个有序链表的方法示例
Jan 31 #Python
Django 日志配置按日期滚动的方法
Jan 31 #Python
Python类的继承用法示例
Jan 31 #Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 #Python
python3使用QQ邮箱发送邮件
May 20 #Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 #Python
You might like
一个ubbcode的函数,速度很快.
2006/10/09 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php强制运行广告的方法
2014/12/01 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
javaScript对象和属性的创建方法
2007/01/15 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
分层教学实施方案
2014/03/19 职场文书
父母寄语大全
2014/04/12 职场文书
励志演讲稿200字
2014/08/21 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
小学母亲节活动总结
2015/02/10 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
辞职信格式范文
2015/05/13 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python