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模块学习 datetime介绍
Aug 27 Python
Python实现备份文件实例
Sep 16 Python
Python实现二分查找算法实例
May 26 Python
tensorflow中next_batch的具体使用
Feb 02 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
python3实现简单飞机大战
Nov 29 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 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 fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
python实现线程池的方法
2015/06/30 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
python中什么是面向对象
2020/06/11 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
全国优秀辅导员事迹材料
2014/05/14 职场文书
环保小标语
2014/06/13 职场文书
班主任先进事迹材料
2014/12/17 职场文书
违纪检讨书
2015/01/27 职场文书
员工给公司的建议书
2019/06/24 职场文书
python删除csv文件的行列
2021/04/06 Python
如何使用PyCharm及常用配置详解
2021/06/03 Python
JavaScript实现简单计时器
2021/06/22 Javascript