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列表推导式的使用方法
Nov 21 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
python右对齐的实例方法
Jul 05 Python
Django serializer优化类视图的实现示例
Jul 16 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
python基础之while循环语句的使用
Apr 20 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
PHP实现AES256加密算法实例
2014/09/22 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Python深入学习之内存管理
2014/08/31 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python八大排序算法速度实例对比
2017/12/06 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
酒店总经理助理职责
2014/02/12 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
资产运营委托书范本
2014/10/16 职场文书
会计师事务所实习证明
2014/11/16 职场文书