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的collections模块中namedtuple结构使用示例
Jul 07 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
python求最大值最小值方法总结
Jun 25 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
numpy np.newaxis 的实用分享
Nov 30 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 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/12/25 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
Python3遍历目录树实现方法
2015/05/22 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
详解python 中in 的 用法
2019/12/12 Python
Python requests设置代理的方法步骤
2020/02/23 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
业务助理岗位职责
2013/11/18 职场文书
物业招聘计划书
2014/01/10 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
Pandas-DataFrame知识点汇总
2022/03/16 Python