Python3实现从排序数组中删除重复项算法分析


Posted in Python onApril 03, 2019

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

题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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

方案一:利用set()快速剔除重复元素。 效率最高

# -*- coding:utf-8 -*-
#! python3
def removeDuclicates(nums):
  nums[:] = sorted(set(nums))
  return len(nums)
#测试
arr1 = [1,1,2,3,4,5,5,6]
print(removeDuclicates(arr1))

运行结果:

6

方案二:双指针法。 效率次之

# -*- coding:utf-8 -*-
#! python3
def removeDuplicates(nums):
  if not nums:
    return 0
  j = 0
  for i in range(1, len(nums)):
    if nums[j] != nums[i]:
      j += 1
      nums[j] = nums[i]
  return j + 1
#测试
arr1 = [1,1,2,3,4,5,5,6]
print(removeDuplicates(arr1))

运行结果:

6

方案三:利用remove()方法。 效率次之

# -*- coding:utf-8 -*-
#! python3
def removeDuplicates(nums):
  i = 0
  while i < len(nums) - 1:
    if nums[i] == nums[i + 1]:
      nums.remove(nums[i])
    else:
      i += 1
  return len(nums)
#测试
arr1 = [1,1,2,3,4,5,5,6]
print(removeDuplicates(arr1))

运行结果:

6

Python 相关文章推荐
python使用psutil模块获取系统状态
Aug 27 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
python如何实现一个刷网页小程序
Nov 27 Python
python 同时读取多个文件的例子
Jul 16 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
python中有关时间日期格式转换问题
Dec 25 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
Python3安装Pillow与PIL的方法
Apr 03 #Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 #Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 #Python
Python3实现计算两个数组的交集算法示例
Apr 03 #Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 #Python
Python3实现的旋转矩阵图像算法示例
Apr 03 #Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 #Python
You might like
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
自荐书模板
2013/12/19 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
财务部岗位职责范本
2015/04/14 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
Python实现科学占卜 让视频自动打码
2022/04/09 Python
MySQL 字符集 character
2022/05/04 MySQL