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的gevent框架的入门教程
Apr 29 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
Python简单计算文件夹大小的方法
Jul 14 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
python对验证码降噪的实现示例代码
Nov 12 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python 字符串格式化的示例
Sep 21 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 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 学习路线与时间表
2010/02/21 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python实现redis三种cas事务操作
2017/12/19 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
wxPython色环电阻计算器
2019/11/18 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
导致python中import错误的原因是什么
2020/07/01 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
道歉短信大全
2015/05/12 职场文书
怎样写家长意见
2015/06/04 职场文书
护理自荐信
2019/05/14 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js