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编写脚本使IE实现代理上网的教程
Apr 23 Python
python简单实现计算过期时间的方法
Jun 09 Python
python判断设备是否联网的方法
Jun 29 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
python如何实现视频转代码视频
Jun 17 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Python基于字典实现switch case函数调用
Jul 22 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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脚本的10个技巧(5)
2006/10/09 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js轮播图代码分享
2016/07/14 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python中装饰器学习总结
2018/02/10 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
Python如何调用JS文件中的函数
2019/08/16 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
荷兰家电销售网站:Welhof
2020/12/08 全球购物
医药工作岗位求职信分享
2013/12/31 职场文书
环境建议书
2015/02/04 职场文书
大学生军训感言
2015/08/01 职场文书