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 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
Django csrf 验证问题的实现
Oct 09 Python
Python中捕获键盘的方式详解
Mar 28 Python
Form表单及django的form表单的补充
Jul 25 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
分享几种python 变量合并方法
Mar 20 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
详解javascript遍历方式
2015/11/11 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
Angular模板表单校验方法详解
2017/08/11 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
python 写一个文件分发小程序
2020/12/05 Python
python中最小二乘法详细讲解
2021/02/19 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
采购部部长岗位职责
2014/02/06 职场文书
大学生军训感想
2014/02/16 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
文案策划专业自荐信
2014/07/07 职场文书
庆六一宣传标语
2014/10/08 职场文书
三八妇女节慰问信
2015/02/14 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
法定代表人身份证明书
2015/06/18 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python