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 相关文章推荐
Python MD5文件生成码
Jan 12 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python编写弹球游戏的实现代码
Mar 12 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
python 实现简单的FTP程序
Dec 27 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
python退出循环的方法
Jun 18 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 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
PHP页面间传递参数实例代码
2008/06/05 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JS与C#编码解码
2013/12/03 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
原生python实现knn分类算法
2019/10/24 Python
python3 logging日志封装实例
2020/04/08 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
简述安装Slackware Linux系统的过程
2012/05/08 面试题
生产部经理岗位职责
2013/12/16 职场文书
高校十八大报告感想
2014/01/27 职场文书
师范生自我鉴定
2014/03/20 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
Mysql基础知识点汇总
2021/05/26 MySQL
MySQL的Query Cache图文详解
2021/07/01 MySQL