Python实现删除排序数组中重复项的两种方法示例


Posted in Python onJanuary 31, 2019

本文实例讲述了Python实现删除排序数组中重复项的两种方法。分享给大家供大家参考,具体如下:

对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度

注意:不能为新数组申请额外的空间,只允许申请O(1)的额外空间修改输入数组

Example 1:

Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
It doesn't matter what you leave beyond

Example 2:

Given nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn't matter what values are set beyond the returned length.

说明:为什么返回列表长度而不用返回列表?因为列表传入函数是以引用的方式传递的,函数中对列表进行的修改会被保留。

// nums is passed in by reference. (i.e., without making a copy)
int len = removeDuplicates(nums);
// any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {
  print(nums[i]);
}

1. 简单判断列表中元素是否相等,相等就删除多余元素

def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if not nums:
      return 0
    if len(nums)==1:  #单独判断列表长度为1的情况,因为之后的for循环从下标1开始
      return 1
    temp_num = nums[0]
    count =0     #for循环中动态删除列表元素,列表缩短,为了防止下标溢出需要用count标记删除元素个数
    for index, num in enumerate(nums[1:]):
      if temp_num == num:   #元素相等就删除
        del nums[index-count]
        count += 1
      else:
        temp_num = num
    return len(nums)
def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    forth = 0
    back = 1
    while back <= len(nums)-1:
      if nums[forth] == nums[back]:
        nums.pop(back)
      else:
        forth += 1
        back += 1
    return len(nums)

2. 修改数组,保证数组的前几个数字互不相同,且这几个数字的长度同返回长度相等

def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if not nums:
      return 0
    length = 0   #不存在重复数字的数组长度
    for index in range(1,len(nums)):   #遍历数组
      if nums[index] != nums[length]:
        length += 1
        nums[length] = nums[index]
    return length+1

算法题来自:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/

Python 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
深入理解Python中range和xrange的区别
Nov 26 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
解决sublime+python3无法输出中文的问题
Dec 12 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
Python实现多进程的四种方式
Feb 22 Python
python实现简单图片物体标注工具
Mar 18 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
Python代码块及缓存机制原理详解
Dec 13 Python
python画环形图的方法
Mar 25 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
Python 操作 MySQL数据库
Sep 18 Python
python重试装饰器的简单实现方法
Jan 31 #Python
Python实现合并两个有序链表的方法示例
Jan 31 #Python
Django 日志配置按日期滚动的方法
Jan 31 #Python
Python类的继承用法示例
Jan 31 #Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 #Python
python3使用QQ邮箱发送邮件
May 20 #Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 #Python
You might like
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
PHP面试题附答案
2015/11/28 面试题
人力资源部培训专员岗位职责
2014/01/02 职场文书
银行领导证婚词
2014/01/11 职场文书
办公室文员工作职责
2014/01/31 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
联谊会主持词
2014/03/26 职场文书
小班开学寄语
2014/04/04 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
什么是Python装饰器?如何定义和使用?
2022/04/11 Python