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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
python从sqlite读取并显示数据的方法
May 08 Python
python使用正则表达式提取网页URL的方法
May 26 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
django使用channels实现通信的示例
Oct 19 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之第六天
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
window.returnValue使用方法示例介绍
2014/07/03 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
详解package.json版本号规则
2019/08/01 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
python 批量修改/替换数据的实例
2018/07/25 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python同步遍历多个列表的示例
2019/02/19 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
python 获取字典键值对的实现
2020/11/12 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
SQL Server数据库笔试题和答案
2016/02/04 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
中医专业应届生求职信
2013/11/17 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
廉洁自律个人总结
2015/02/14 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android