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程序
Apr 04 Python
python缩进区别分析
Feb 15 Python
python中pycurl库的用法实例
Sep 30 Python
Python易忽视知识点小结
May 25 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
Python读写docx文件的方法
May 08 Python
python实现图片筛选程序
Oct 24 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
Python socket模块方法实现详解
Nov 05 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 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上传、管理照片示例
2006/10/09 PHP
php下使用以下代码连接并测试
2008/04/09 PHP
php 魔术函数使用说明
2010/02/21 PHP
PHP 面向对象详解
2012/09/13 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
浅谈django channels 路由误导
2020/05/28 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
大学生写自荐信的技巧
2014/01/08 职场文书
人大调研汇报材料
2014/08/14 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
财产保全担保书
2015/01/20 职场文书
赔偿协议书
2015/01/27 职场文书
干部培训工作总结2015
2015/05/25 职场文书
寒假致家长的一封信
2015/10/10 职场文书