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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
python 3.6.4 安装配置方法图文教程
Sep 18 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
浅析Python __name__ 是什么
Jul 07 Python
Python命名空间及作用域原理实例解析
Aug 12 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
实现树状结构的两种方法
2006/10/09 PHP
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
php入门小知识
2008/03/24 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
WAF的正确bypass
2017/01/05 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
JS 继承实例分析
2008/11/04 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
微信小程序实现点赞业务
2021/02/10 Javascript
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
python reduce 函数使用详解
2017/12/05 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
竞聘报告优秀范文
2014/11/06 职场文书
感谢信范文大全
2015/01/23 职场文书
纪委立案决定书
2015/06/24 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android